You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server链接服务器间共享全局变量@@VERSION?

嗨,这个问题我刚好有实操经验,咱们一步步来解决:

获取链接服务器的SQL Server版本信息

要在两台链接服务器之间获取对方的@@VERSION并提取版本号,核心是让查询在目标链接服务器的上下文里执行——毕竟@@VERSION是本地服务器的全局变量,直接在当前服务器执行只能拿到本机的版本。下面给你两种可行的方案:

方案1:使用OPENQUERY函数

OPENQUERY会直接在指定的链接服务器上执行SQL语句,这样就能拿到目标服务器的版本字符串,再按你的需求做截取:

DECLARE @Ver VARCHAR(50)

-- 把LinkedServerName替换成你的链接服务器实际名称
SELECT @Ver = SUBSTRING(version_info, 22, 7)
FROM OPENQUERY(LinkedServerName, 'SELECT @@VERSION AS version_info')

PRINT '链接服务器版本:' + @Ver

简单解释:

  • OPENQUERY(LinkedServerName, 'SELECT @@VERSION AS version_info') 这部分会远程执行,返回目标服务器的完整版本字符串
  • 本地再对返回的结果执行你原本的SUBSTRING逻辑,提取需要的版本片段

方案2:使用EXEC AT语法

另一种灵活的方式是用EXEC ... AT指定在链接服务器上执行代码,还能直接把远程结果赋值到本地变量:

DECLARE @RemoteVersion NVARCHAR(MAX)
DECLARE @Ver VARCHAR(50)

-- 远程执行查询,将@@VERSION赋值到本地变量@RemoteVersion
EXEC('SELECT @RemoteVersion = @@VERSION', @RemoteVersion OUTPUT) AT LinkedServerName

-- 按你的规则截取版本号
SET @Ver = SUBSTRING(@RemoteVersion, 22, 7)

PRINT '链接服务器版本:' + @Ver

注意事项

  • 确保你的链接服务器配置正确,且当前登录账号有足够权限访问目标服务器并执行查询
  • SUBSTRING(22,7)是基于SQL Server默认的@@VERSION格式设置的,如果目标服务器的版本字符串格式有差异(比如不同语言版本),建议先远程执行SELECT @@VERSION查看输出,再调整截取的起始位置和长度

内容的提问来源于stack exchange,提问作者Rocket128

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:11:06