链接服务器导致维护构建脚本出现问题

Linked Servers are causing trouble for maintaining build scripts

我有一个测试数据库和一个开发数据库。现在我需要我们所有脚本的两个版本,因为我有一个链接服务器,并且每个版本之间的名称都会发生变化,部分原因是数据库具有不同的名称。

人们如何解决这个问题?我们讨论了执行查找替换的构建任务,但我希望有一种更好更优雅的方式。

您可以为需要的对象创建同义词来代替完全限定的语句。例如:

SELECT * FROM [linked_server_name].[test_database_name].[dbo].[table_1]

...由以下部分组成...

[linked server].[database].[schema].[object]

由于这非常冗长,您可以通过发出以下命令为上面示例中的对象创建一个同义词:

CREATE SYNONYM [dbo].[table_1] FOR [linked_server_name].[test_database_name].[dbo].[table_1]

...您的查询变为:

SELECT * FROM [dbo].[table_1]

您可以使用以下脚本为数据库中的所有表生成同义词并将其替换为您的对象名称:

    SELECT  'CREATE SYNONYM ' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) + ' FOR [SQL-SOURCE1].' + QUOTENAME(TABLE_CATALOG) + '.' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) 
    FROM    [linked_server_name].[test_database_name].[INFORMATION_SCHEMA].Tables 
    WHERE   TABLE_TYPE = 'BASE TABLE'