如何在SQL Server 2008中查找链接服务器的目标IP地址?

时间:2011-02-20 06:10:39

标签: sql sql-server linked-server

如何在SQL Server 2008中找到已定义链接服务器的地址?链接服务器存在,其连接测试显示没有问题。但我找不到链接服务器连接的位置。 属性框没有找到答案。

谢谢。

3 个答案:

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

通常,此功能可以在没有特殊权限的情况下工作,这与动态视图不同,因此它对于受限环境和必须以最小权限运行的生产代码非常有用。