我有一个Windows终端服务器,其中许多用户通过RDP登录以运行应用程序。该应用程序为每个用户与SQL Server 2008 R2实例建立一个或多个连接。所有用户都使用相同的SQL登录名访问相同的数据库。我希望能够跟踪特定用户的SQL会话,但是我还没有找到一种方法来确定哪个SQL会话属于哪个用户。但是,我能够确定应用程序的每个实例使用的源TCP端口。
有没有一种方法可以基于客户端的TCP端口来跟踪SQL会话?
我有一个Windows终端服务器,其中许多用户通过RDP登录以运行应用程序。该应用程序为每个用户与SQL Server 2008 R2实例建立一个或多个连接。所有用户都使用相同的SQL登录名访问相同的数据库。我希望能够跟踪特定用户的SQL会话,但是我还没有找到一种方法来确定哪个SQL会话属于哪个用户。但是,我能够确定应用程序的每个实例使用的源TCP端口。
有没有一种方法可以基于客户端的TCP端口来跟踪SQL会话?
Answers:
有没有一种方法可以基于客户端的TCP端口来跟踪SQL会话?
是。您可以查询sys.dm_exec_connections以从客户端的TCP端口(列client_tcp_port
)标识会话。
例如:
SELECT DEC.session_id
FROM sys.dm_exec_connections AS DEC
WHERE DEC.client_net_address = '192.168.0.100'
AND DEC.client_tcp_port = 63465;