如何在两台服务器之间共享全局变量

时间:2018-04-03 11:20:52

标签: sql-server tsql global-variables linked-server

在标题中,我想在SQL Server中的两个链接服务器之间共享全局变量 @@ Version

我怎么能用像

这样的查询来做到这一点
SET @Ver = SUBSTRING (@@VERSION, 22, 7)

2 个答案:

答案 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表。