Bra*_*adC 5 sql-server sql-server-2012 connections
我有一个繁忙的 SQL 2012 服务器,其中到一个特定数据库的连接(使用相同的 SQL 登录)不显示“主机名”,我需要找出这些连接来自哪个(几个)框。
我已经尝试了所有正常的内置和第三方工具(master.sys.processes
,sys.dm_exec_sessions
,sp_who2
,sp_WhoIsActive
,SSMS的活动监视器,甚至是SQL事件探查器和井寺诊断经理),他们都不能给我的服务器的主机名/客户端这些连接背后,大概是因为它们都使用相同的底层系统表/视图。
我也可以使用 IP 地址,但也看不到任何方法可以从 SQL 中确定该地址。
如果这是任何帮助:
sys.dm_exec_sessions
显示client_interface_name
是 ODBCprogram_name
两者都没有捕获我在这里找到了一个相关的问题(尽管来自另一边),但没有得到解答。
在这一点上,我很想禁用用户,以便我可以在 SQL 错误日志中捕获一些失败的登录,但我认为应用程序团队不会对此感到满意。
看起来我只是问错了问题,我在下面找到了答案:如何从 SQL Server 2008 本身获取客户端 IP 地址?:
正如 Aaron 在评论中提到的,我不得不使用sys.dm_exec_connections
来获取源 IP。这是我使用的查询的最终版本:
SELECT s.session_id, s.login_name, DB_NAME(s.database_id) as database_name,
s.host_name, s.program_name, c.client_net_address, client_tcp_port,
c.net_transport, c.auth_scheme, s.login_time
FROM sys.dm_exec_sessions s
INNER JOIN sys.dm_exec_connections c
ON s.session_id = c.session_id
WHERE s.login_name = 'MYSTERY_USER'
ORDER BY s.session_id
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3348 次 |
最近记录: |