在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.
请帮忙。
答案 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)