这似乎是一个基本问题,但我找不到任何答案 - 我需要能够从链接服务器获取服务器名称/实例等。我尝试了几件事:
select <linked server>.@@SERVERNAME;
select <linked server>.SERVERPROPERTY('ServerName');
……但没有喜悦。有任何想法吗?
这是SQL 2008 R2
& 2014
(2008R2
是链接服务器)
编辑:错误是:
消息 102,级别 15,状态 1,第 2 行“@@SERVERNAME”附近的语法不正确。
一些稍微短一些(更自然,恕我直言)的方法:
或者:
我更喜欢这
sp_executesql
条路线,因为:它仍然允许强类型参数,而不是处理各种字符串连接、单引号转义等。
在该路径中指定特定数据库很容易,而不必在查询中引用的所有对象上放置数据库前缀。是的,您可以动态定义数据库:
如果需要,链接服务器名称也是:
您可以
OPENQUERY
按照 MSDN 中的说明使用来获取链接服务器的信息:即使用
OPENQUERY ( linked_server ,'query' )
像下面这样的东西会给你使用
sys.dm_exec_connections
dmv 的服务器名称有更简单的方法可以获取链接服务器的服务器名称。您可以查询 sys.sysservers 或运行 EXEC sp_linkedservers 来为您提供本地链接服务器上所需的所有信息,包括服务器名称。如果需要,这里是 sp_linkedservers 上的链接。虽然这不一定回答如何远程选择@@SERVERNAME 的问题,但它会为您提供这些信息。
最简单的方法(SSMS)
如果您对主数据库没有权限(您也不应该),则无法通过 openquery 编写脚本。
从对象浏览器
+链接对象
++链接服务器
+++[链接服务器名称]
左键单击链接服务器名称 Script Linked Server As > Create To > New Query Editor Window
在此处查找@datasrc='链接服务器源'
瞧!