Relação de IPs e Conexões Conectadas ao Microsoft SQL Server 2005, 2008 e R2.

Pessoal, bom dia.

 

Tudo bem?

 

Mantendo o mesmo ritmo, estou de volta com uma pequena dica, que acredito ser muito útil principalmente para os Administradores de Banco de Dados em um ambiente corporativo.

 

Pois bem, em muitas situações temos a necessidade de monitorar as conexões que estão fazendo uso do nosso Microsoft SQL Server, procurando identificar o que pode em alguma situação estar gerando problemas de Desempenho, Acesso a Dados ou até mesmo durante processos de Auditoria.

 

Então é este o objetivo de dica de hoje apresentar como podemos obter informações das conexões ativas em uma determinada instância SQL Server, mas o diferencial desta dica esta no conjunto de informações que podemos capturar, dentre elas o Endereço de IP das Estações de trabalho, Aplicativos e Conexões em uso.

 

A técnica para Administração de Servidores e Estações de Trabalho vai muito além de saber o que esta sendo acesso em uma rede, mas sim de que forma e por quem. No SQL Server isso também é fundamental e de extrema importância para nosso ambiente.

 

Em algumas situações temos a necessidade de descobrir o que determinado Endereço IP (Internet Protocol) esta realizando em nossa rede, como também, que recursos e aplicações este IP esta fazendo troca de dados como Microsoft SQL Server.

 

O código utilizado para esta dica vai muito, além disso, ele nos possibilita obter o seguinte conjunto de informações:

  • Endereço IP;
  • Aplicação, Recurso e Processo;
  • Hostname da Estação de Trabalho, Máquina Local ou Servidor; e
  • Logins Conectados.

 

Para ilustrar o retorno deste conjunto de informações, vou apresenta a seguir o código desta dica, denominado Código 1.

 

— Código 1 – Relação de IPs conectados ao SQL Server –

SELECT  ec.client_net_address,

              es.[program_name],

              es.[host_name],

              es.login_name

FROM sys.dm_exec_sessions AS es INNER JOIN sys.dm_exec_connections AS ec

                                                           ON es.session_id = ec.session_id

ORDER BY ec.client_net_address,  es.[program_name];

 

Como podemos observar, o código é bastante simples, fazendo uso de duas DMV: Visões de Gerenciamento Dinâmico:

 

  • Sys.dm_exec_sessions: Retorna uma linha por sessão autenticada no SQL Server. Trata-se de uma exibição de escopo de servidor que mostra informações sobre todas as conexões de usuário ativas e tarefas internas..
  • Sys.dm_exec_connections: Retorna informações sobre as conexões estabelecidas com esta instância do SQL Server e os detalhes de cada conexão.

Com base no relacionamento destas duas DMVs conseguimos apresentar em tela o resultado deste código, destacando que a Coluna que retorna o Endereço IP pertence a sys.dm_exec_connections. As demais colunas estão vinculadas a sys.dm_exec_sessions.

Observação: A coluna Client_net_address, apresenta a lista de Endereços IP, quando for retornado nesta coluna o valor <local machine>, isso indica que o recurso, aplicação ou conexão esta sendo executada na mesma máquina ou instância em que o Código 1 esta sendo processado.

A Figura 1 apresentada abaixo, ilustra o conjunto de informações retornadas após a execução do Código 1.


Figura 1 – Resultado da execução do Código 1, apresentando a Relação de IPs conectados.

Bem pessoal, acredito que todos devem ter entendido o objetivo desta dica, espero ter ajudado.

Vou ficando por aqui, nos encontramos em breve.

Até mais.

4 comentários em “Relação de IPs e Conexões Conectadas ao Microsoft SQL Server 2005, 2008 e R2.

  1. Opa, super me ajudou.
    Incrementei pois precisava saber também o nome de usuário e da base.
    Caso alguém precise:

    SELECT
    IP = ec.client_net_address,
    HOSTNAME = es.[host_name],
    LOGIN = es.login_name,
    BASE = db_name(dbid),
    PROGRAMA = es.[program_name],
    HORA = last_request_start_time
    FROM sys.dm_exec_sessions AS es INNER JOIN sys.dm_exec_connections AS ec
    ON es.session_id = ec.session_id
    inner join sys.sysprocesses sp on es.session_id = sp.spid
    WHERE client_net_address NOT LIKE ‘local%’
    ORDER BY ec.client_net_address, es.[login_name];

    Curtir

Os comentários estão fechados.