sql - 为数据库创建同义词/更改数据库 View 指向

标签 sql sql-server view synonym

我知道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/

相关文章:

mysql - SQL查询中如何根据出现的顺序对数据进行分组

sql-server - SQL Server 2016 更改对象所有者

sql - 在 SQL 中存储直方图的最有效(存储空间)方式

c# - 将 SqlDataType 转换为 C# 枚举

sql - 在单个存储过程中返回多个结果集是一种很好的做法

asp.net-mvc - 以编程方式获取 MVC View 列表?

android - 如何在 Android 中进行平滑的图像旋转?

view - 我在 ClearCase 中的快照 View 消失了,如何恢复它们?

sql server Db Mail 可以为两个或多个查询发送邮件

asp.net - 在 ASP.NET 代码后面使用 Web 服务的最佳方式