Eu tenho um servidor SQL 2012 ocupado em que as conexões com um banco de dados específico (usando o mesmo login SQL) não mostram um "nome de host" e preciso descobrir de qual caixa (de várias) essas conexões estão vindo.
Eu tentei todas as ferramentas normais internas e de terceiros ( master.sys.processes
, sys.dm_exec_sessions
, sp_who2
, sp_WhoIsActive
, o SSMS Activity Monitor, mesmo SQL Profiler e Idera Diagnostic Manager), nenhuma delas pode me fornecer o nome do host do servidor/cliente por trás dessas conexões , presumivelmente porque todos eles usam as mesmas tabelas/visualizações de sistema subjacentes.
Eu ficaria bem com um endereço IP também, mas também não vejo nenhuma maneira de determinar isso de dentro do SQL.
Caso isso seja de alguma ajuda:
sys.dm_exec_sessions
mostra oclient_interface_name
é ODBC- Nada capturado para
program_name
qualquer um - O usuário é uma conta SQL que por acaso é um SYSADMIN (sim, eu sei...)
Encontrei uma pergunta relacionada aqui (embora do outro lado), mas que ficou sem resposta.
Neste ponto, estou tentado a desabilitar o usuário para que eu possa capturar alguns logins com falha no log de erros do SQL, mas não imagino que a equipe do aplicativo ficará feliz com isso.
Parece que eu estava apenas fazendo a pergunta errada, encontrei a resposta em: Como obter o endereço IP do cliente do próprio SQL Server 2008? :
Como Aaron mencionou nos comentários, tive que usar
sys.dm_exec_connections
para obter o IP de origem. Aqui está a versão final da consulta que usei: