在标题中,我想在SQL Server中的两个链接服务器之间共享全局变量 @@ Version 。
我怎么能用像
这样的查询来做到这一点SET @Ver = SUBSTRING (@@VERSION, 22, 7)
答案 0 :(得分:2)
您无法在两台服务器之间共享变量。但是,如果将服务器设置为链接服务器,则可以使用OPENQUERY
。例如:
SELECT *
FROM OPENQUERY(OtherServer,
'SELECT @@VERSION AS Version');
其中OtherServer
是其他服务器的链接服务器对象的名称(可能不一定是服务器的名称)。如果您没有链接服务器,则可以使用OPENROWSET
。例如:
SELECT *
FROM OPENROWSET('SQLNCLI',
'Server=OtherServer;Trusted_Connection=YES;',
'SELECT @@VERSION AS Version');
其中OtherServer
是其他服务器的实际名称。如果实例已命名,则您还需要包含该实例。例如,Server=sqldev\Sandbox
将是在服务器Sandbox
上运行的sqldev
命名实例。
如果你想把它设置为一个变量的值,你就像其他任何一个任务一样:
DECLARE @SQLVersion varchar(500);
SELECT @SQLVersion = [Version]
FROM OPENROWSET('SQLNCLI',
'Server=OtherServer;Trusted_Connection=YES;',
'SELECT @@VERSION AS Version');
PRINT @SQLVersion;
答案 1 :(得分:0)
我想到的第一件事是桌子和链接的服务器。在服务器A上,创建global_variables表并以适合您的格式存储该表中的值。然后,在服务器B上,您可以通过查询服务器A上的新表来设置一个等于global_variables表中的值的局部变量。
如果您需要在B上对变量进行更改,则可以从服务器链接后更新A上的global_variables表。