获取正在链接服务器中执行查询的服务器名称

时间:2017-05-22 09:56:42

标签: sql-server linked-server

在SQL Server中,我有一台服务器A,我将服务器B链接到A,所以从服务器A我可以执行如下查询:

exec B.DataBase1.dbo.simplePs.

我的问题是如何获得正在执行PS的服务器?我试过@@ServerName这样:

Create procedure simplePs
as
    insert into TRACE(EventInfo) values (@@SERVERNAME)

但我得到的服务器B不是服务器A.

请帮忙。

2 个答案:

答案 0 :(得分:1)

你可以尝试查询sys.sysprocesses表 - 那里有很多有用的连接信息,例如。

insert into TRACE(EventInfo) 
values (select distinct hostname from sys.sysprocesses where spid = @@SPID)

将插入连接的源主机名。

答案 1 :(得分:0)

对于服务器B,你没有这样的上下文信息 查询在其自己的实例/数据库上执行
您可以做的最好的事情是将源服务器作为参数传递给@@SERVERNAME作为默认值的过程。

Create procedure simplePs
@sourceServer as nvarchar(255) = @@SERVERNAME
as
insert into TRACE(EventInfo) values (@sourceServer)