T-SQL动态链接服务器

时间:2016-06-07 09:33:22

标签: sql sql-server tsql linked-server

我有两个独立的环境(测试和生产)。每个环境都有两个服务器(istN和istG)。

及其关联的服务器:

  • 测试(从istG到istN的链接服务器):test01 \ istN。 如果在查询中使用的是:

    SELECT * FROM [test01\istn].MyDatabase.dbo.Table01

  • 生产(从istG到istN的链接服务器)production01 \ istn 如果在查询中使用的是:

    SELECT * FROM [production01\istn].MyDatabase.dbo.table01

我们使用的发布系统在每个环境(测试和生产)中部署相同的SQL脚本,无论环境如何:

那么如何只编写一个可以在环境中使用的脚本呢? 有没有一种方法来获得动态链接服务器? 像这样:

SELECT * FROM [@variable].MyDatabase.dbo.table01

感谢。

2 个答案:

答案 0 :(得分:0)

你可以这样试试,

DECLARE @linkedServer VARCHAR(50) = ''

EXEC ('select * from openquery(' + @linkedServer + ', ''SELECT * FROM MyDatabase.dbo.Table01''')

答案 1 :(得分:0)

请使用以下查询。它在SQL Server 2012中运行良好。

DECLARE @LinkedServer VARCHAR(100)
SET @LinkedServer ='production01\istn'
EXEC('SELECT * FROM ['+@LinkedServer+'].MyDatabase.dbo.table01')

请在执行期间使用以下内容获取服务器名称:

DECLARE @LinkedServer VARCHAR(100)
SET @LinkedServer =(SELECT @@SERVERNAME)
EXEC('SELECT * FROM ['+@LinkedServer+'].MyDatabase.dbo.table01')