我有两个独立的环境(测试和生产)。每个环境都有两个服务器(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
感谢。
答案 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')