【问题标题】:Linked Servers are causing trouble for maintaining build scripts链接服务器给维护构建脚本带来了麻烦
【发布时间】:2015-11-12 18:12:44
【问题描述】:

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

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

【问题讨论】:

标签: sql-server linked-server


【解决方案1】:

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

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'

【讨论】:

    猜你喜欢
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多