如何在SQL Server 2008中找到已定义链接服务器的地址?链接服务器存在,其连接测试显示没有问题。但我找不到链接服务器连接的位置。 属性框没有找到答案。
谢谢。
答案 0 :(得分:4)
如果目标是SQL Server 2005 +
,则从SQL Server内部SELECT * FROM OPENQUERY (
myLinkedServer,
'SELECT
@@SERVERNAME AS TargetServerName,
SUSER_SNAME() AS ConnectedWith,
DB_NAME() AS DefaultDB,
client_net_address AS IPAddress
FROM
sys.dm_exec_connections
WHERE
session_id = @@SPID
')
无论如何,你可以根据自己的需要进行调整。
答案 1 :(得分:1)
如果您的链接服务器连接到另一个MSSQL DB,那么您只需从命令行:ping serverName
ping目标服务器名称。要确定目标服务器名称,请参阅链接服务器的属性。
详见:http://msdn.microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure。在本文中,目标服务器名称是“Accounting”
答案 2 :(得分:0)
我尝试了gbn的答案,但是由于缺乏许可,我遇到了以下错误:
用户无权执行此操作。
对对象“服务器”,数据库“主”的“查看服务器状态”权限被拒绝。
但是考虑到他使用OPENQUERY在目标服务器上运行查询的想法,我得出了这个版本:
SELECT * FROM OPENQUERY (
myLinkedServer,
'select CONNECTIONPROPERTY ( ''client_net_address'' ) CLIENT_ADDRESS
, CONNECTIONPROPERTY ( ''local_net_address'' ) SERVER_ADDRESS'
)
如果您直接运行此查询:
select CONNECTIONPROPERTY ( 'client_net_address' ) CLIENT_ADDRESS
, CONNECTIONPROPERTY ( 'local_net_address' ) SERVER_ADDRESS
CLIENT_ADDRESS是您工作站的IP,而SERVER_ADDRESS是您要连接的服务器的IP。
但是,如果您通过OPENQUERY运行该服务器,则CLIENT_ADDRESS将成为您要连接的服务器,而SERVER_ADDRESS将成为链接服务器的目标。
有关连接属性的更多信息,请参见:CONNECTIONPROPERTY (Transact-SQL) Microsoft documentation
通常,此功能可以在没有特殊权限的情况下工作,这与动态视图不同,因此它对于受限环境和必须以最小权限运行的生产代码非常有用。