请问有没有人知道如何通过使用TSQL语句确定我的联接服务器上运行的SQL版本?
我在运行SQL2005,我的联接服务器正在运行混合的sql2000、2005和2008版本。
请问有没有人知道如何通过使用TSQL语句确定我的联接服务器上运行的SQL版本?
我在运行SQL2005,我的联接服务器正在运行混合的sql2000、2005和2008版本。
select * from openquery(MyLinkedServer,'SELECT SERVERPROPERTY(''productversion'')')
工作正常
关于OPENQUERY的一个小问题是,我们不能在服务器和查询中使用除字符串字面量以外的任何内容。
使用EXEC AT,您至少可以为查询使用varchar变量(尽管正确引用这些内容可能有点麻烦),但不能为服务器名称使用:
declare @sql AS varchar(max) = 'SELECT SERVERPROPERTY(''productversion'')' EXEC(@sql) AT MyLinkedServer
我认为这只是解析器限制,而不是设计上的故意限制。
您可以使用OPENQUERY通过链接服务器访问@@version。
SET @sql = 'SELECT * FROM OPENQUERY(['+@servername+'],''select @@VERSION'')'
你也可以尝试:
exec master..xp_msver
SELECT @@VERSION