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

Dica – 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.

Autor: Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP – Faculdade de Informática e Administração Paulista de São Paulo. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação pela Uninove – Campus São Roque. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1994 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator – Administrador de Banco de Dados – SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, entre outros recursos. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, etc. Trabalhei entre 2011 e 2017 como Administrador de Banco de Dados e Coordenador de TI no FIT – Instituto de Tecnologia da Flextronics, atualmente exerço a função de Professor Universitário na FATEC São Roque. CTO da Galvão Tecnologia, consultoria especializada em Gestão de TI, Administração de Servidores Windows Server, Bancos de Dados Microsoft SQL Server e Virtualização. Possuo titulação Oficial Microsoft MVP e reconhecimentos: MCC, MSTC, MIE e MTAC.

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 encerrados.