如何获取当前连接的 sysprocesses.program_name
How to get sysprocesses.program_name for current connection
我需要为当前连接检索 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
触发器中。
我正在通过仅处理触发器来调整遗留应用程序(它是 "emergency maintenance")。
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
Ant_22:是的,如果在连接字符串中添加“应用程序名称”,您可以看到应用程序名称,例如查看每个进程有多少个连接:
SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
PROGRAM_NAME as ProgName,
loginame as LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, PROGRAM_NAME, loginame
我需要为当前连接检索 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
触发器中。
我正在通过仅处理触发器来调整遗留应用程序(它是 "emergency maintenance")。
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
Ant_22:是的,如果在连接字符串中添加“应用程序名称”,您可以看到应用程序名称,例如查看每个进程有多少个连接:
SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
PROGRAM_NAME as ProgName,
loginame as LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, PROGRAM_NAME, loginame