我知道CREATE SYNONYM
不支持数据库,但我希望实现它提供的功能。
我们有数据库 A,其中包含数据库 B 上的表的 View 。问题是“数据库 B”并不总是称为“数据库 B”。我们使用数据库项目进行部署,如果没有“数据库 B”,目前会出现“无效对象名称”错误。
目前的解决方法是打开 .dbschema 文件并进行查找和替换。我想另一个选择是创建大量表同义词。
更改数据库的多个 View 引用而不单独更改每个 View 的最佳方法是什么?
谢谢
最佳答案
同义词是实现此目的的好方法。不过,您必须在对象级别创建同义词(正如您所发现的)。执行此操作的一种简单方法是编写一个脚本,该脚本运行 DatabaseB 中的表列表(来自您的示例),并为 DatabaseA 中的每个表创建一个同义词。保持同义词的名称相同,这样 View 中的代码就不必更改。例如,您在 DatabaseB 中有 tbl_a、tbl_b 和 tbl_c,您希望脚本最终执行以下操作:
create synonym [otherDb].[tbl_a] for [DatabaseB].[schemaB].[tbl_a]
create synonym [otherDb].[tbl_b] for [DatabaseB].[schemaB].[tbl_b]
create synonym [otherDb].[tbl_c] for [DatabaseB].[schemaB].[tbl_c]
现在,在您的 View 代码中,您将始终使用 [otherDb].[tbl_a]、[otherDb].[tbl_b] 和 [otherDb].[tbl_c]。希望这是有道理的。
关于sql - 为数据库创建同义词/更改数据库 View 指向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8297310/