我需要为当前连接检索sysprocesses.program_name
的值。我使用Sql Server 2008R2。
换句话说,我想加入sysprocesses
select * from sys.dm_exec_connections
where session_id = @@SPID
但我没有成功。
只是为了解释一下背景:
我需要知道当前会话的program_name
,因为我正在处理的应用程序写入有关谁登录到系统的信息(它不依赖于sql服务器用户,因为sa
用于连接)到program_name
(这是一个技巧) )。如果我能阅读program_name
,我将能够在我写的INSTEAD OF UPDATE
触发器中实现一些自定义逻辑。
我正在通过仅使用触发器来伪装遗留应用程序(这是“紧急维护”)。
select app_name()
或者,您可以使用此查询获取的不仅仅是程序的名称:
select *
from sys.[dm_exec_connections] as [dec]
inner join [sys].[sysprocesses] as [sp] on [dec].[session_id] = [sp].[spid]
where [dec].[session_id] = @@SPID