为数据库创建同义词/更改数据库视图指向

Mat*_*att 5 sql sql-server view synonym

我知道数据库不受支持CREATE SYNONYM,但我希望实现这将提供的功能.

我们有数据库A,其中包含数据库B上表的视图.问题是"数据库B"并不总是称为"数据库B".我们使用数据库项目进行部署,如果没有"数据库B",目前会出现"无效对象名称"错误.

目前的解决方法是打开.dbschema文件并执行查找和替换.我想另一个选择是创建一个表同义词的加载.

在不更改每个视图的情况下更改数据库的最佳方法是什么?

谢谢

Ben*_*hul 5

同义词是一种很好的方法.您必须在对象级别创建同义词(正如您所发现的那样).一种简单的方法是编写一个脚本,该脚本贯穿DatabaseB中的表列表(来自您的示例),并为DatabaseA中的每个表创建一个同义词.保持同义词的名称相同,以便视图中的代码不必更改.例如,您在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]
Run Code Online (Sandbox Code Playgroud)

现在,在您的视图代码中,您将始终使用[otherDb].[tbl_a],[otherDb].[tbl_b]和[otherDb].[tbl_c].希望这是有道理的.