Monitorando atividades usando sp_WhoIsActive no SQL Server

Monitorando atividades usando sp_WhoIsActive no SQL Server

sp_whoisactive embedded documentation
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Neste artigo, falaremos sobre o procedimento armazenado sp_WhoIsActive e como podemos usá-lo para monitorar atualmente
    executando atividades no SQL Server.

Introdução

Os administradores de banco de dados (DBAs) estão constantemente verificando as operações atualmente em execução em uma instância do SQL Server, especialmente quando o servidor está mais lento.

Em geral, a Microsoft forneceu dois procedimentos armazenados do sistema chamados “sp_who” e “sp_who2” para recuperar todos os
    executando processos na instância, mas eles não possuem muitas informações úteis que possam facilitar o desempenho
    processo de monitoramento e análise, também mostram muita informação inútil (processos do sistema).

Por esse motivo, Adam Machanic (MVP da Microsoft desde 2004) desenvolveu um procedimento armazenado mais poderoso chamado “sp_whoisactive” para preencher a lacuna entre as necessidades reais dos DBAs e os
    procedimentos atualmente fornecidos (sp_who e sp_who2).

Nas seções a seguir, falaremos brevemente sobre o procedimento armazenado sp_who e sp_who2 e ilustraremos
    como baixar e usar o procedimento armazenado sp_whoisactive.

sp_Who e sp_Who2

Como mencionamos anteriormente, a Microsoft forneceu procedimentos armazenados sp_Who e so_Who2 para o monitoramento de atividades no SQL
    Servidor. Nesta seção, explicaremos quais são as informações retornadas por cada procedimento armazenado e quais são as diferenças entre eles.

Conforme descrito na documentação oficial, sp_who “Fornece informações sobre usuários, sessões e processos atuais em uma instância do Microsoft SQL Server Database Engine. A informação pode ser
        filtrado para retornar apenas os processos que não estão ociosos, que pertencem a um usuário específico ou que pertencem a um
        sessão específica “.

sp_who retorna informações como o ID do processo da sessão (SPID), o ID do contexto de execução (ECID), o processo
    status, o ID da sessão de bloqueio, o nome do banco de dados, o logon e o nome do host associados a esse processo e os
    tipo de comando

Leia Também  Scripts Python para tabelas dinâmicas no SQL Server

saída do procedimento sp_who

Figura – saída sp_who

sp_Who2 é semelhante ao sp_Who, mas não está documentado nem é suportado, mas retorna mais informações e desempenho
    contador dos processos atuais, como o nome do programa que executa o comando Disk IO, CPU Time, last batch
    tempo de execução.

saída do procedimento sp_who2

Figura – saída sp_who2

Conforme mostrado nas capturas de tela acima, a saída desses procedimentos está mostrando todos os processos do sistema e do usuário em execução que não são necessários o tempo todo e o usuário pode filtrar apenas usando o nome de login ou o ID da sessão enquanto pode precisar ocultar os processos do sistema. Além disso, as saídas não contêm nenhuma informação sobre o comando SQL em execução no momento, como tempo de execução, duração da execução, informações de WAIT e mais informações.

Baixe e instale sp_whoisactive

Para baixar esse procedimento, você deve ir para a página de downloads do site e selecionar a versão relevante ou pode fazê-lo no repositório do GitHub.

Após a conclusão do download, você deve abrir o arquivo who_is_active.sql usando o SQL Server Management Studio e
    execute o script.

Usando sp_Whoisactive

Após a instalação do procedimento, se o executarmos, podemos ver que ele retorna apenas os processos do usuário em execução por padrão
    e fornece as seguintes informações para cada processo:

Coluna

Descrição

Mostrado por sp_who

Mostrado por sp_who2

dd hh: mm: ss.mss

Tempo decorrido do processo

Não

Não

identificação de sessão

O ID da sessão do processo

sim

sim

sql_text

O comando SQL atualmente em execução

Não

Não

Nome de acesso

O nome de login associado ao processo

sim

sim

wait_info

As informações de espera do processo (agregadas)

Não

sim

CPU

O tempo de CPU

Não

sim

tempdb_allocations

Número de gravações Tempdb concluídas

Não

Não

tempdb_current

Número de páginas Tempdb alocadas atualmente

Não

Não

blocking_session_id

O ID da sessão de bloqueio

sim

sim

número de leituras realizadas

Não

E / S de disco

escreve

número de gravações feitas

Não

E / S de disco

leituras físicas

número de leituras físicas feitas

Não

E / S de disco

memoria usada

a quantidade de memória usada

Não

Não

status

O status do processo

sim

sim

open_tran_count

o número de transações usadas

Não

Não

percent_complete

a porcentagem de conclusão da consulta

Não

Não

nome de anfitrião

O nome da máquina host

sim

sim

nome do banco de dados

O nome do banco de dados em que a consulta é executada

sim

sim

nome do programa

O aplicativo que executou a consulta

Não

sim

start_time

A hora de início do processo

Não

sim

login_time

A hora do login

Não

Não

Identificação do Pedido

O ID da solicitação

sim

sim

collection_time

A hora em que essa última seleção foi executada

Não

Não

parte um da saída padrão sp_whoisactive

Figura – Saída do procedimento, parte 1

parte dois da saída padrão sp_whoisactive

Figura – saída do procedimento parte 2

Como mostrado abaixo, para mostrar os processos do sistema, você deve executar o seguinte comando:

mostrando processos do sistema usando sp_whoisactive

Figura – Mostrando processos do sistema

Você pode visualizar mais informações deste procedimento passando parâmetros adicionais, como
    @get_additional_info, @get_locks, @get_avg_time e outros parâmetros.

Uma das coisas surpreendentes sobre esse procedimento é que ele está bem documentado e todas as informações relacionadas podem ser
    obtido executando o seguinte comando:

documentação incorporada sp_whoisactive

Figura – Documentação incorporada do procedimento

Conforme mostrado na imagem acima, o comando help contém três seções:

  1. Informação geral: onde informações gerais como versão, site, e-mail do criador são
            forneceu
  2. Descrição dos parâmetros: onde uma lista de todos os parâmetros disponíveis com sua descrição é
            forneceu
  3. Descrição das colunas de saída: uma lista completa de todas as colunas de saída disponíveis com seus
            descrições

Salvando dados históricos

Se precisarmos salvar periodicamente as informações dos processos em execução para análises adicionais, e como todas as colunas de saída
    Como tipos e dados de dados podem ser encontrados na documentação incorporada do procedimento, podemos criar um trabalho do agente SQL que
    periodicamente executa o procedimento sp_whoisactive dentro de um comando INSERT, como:

Em seguida, podemos nos referir aos dados armazenados posteriormente para uma análise mais aprofundada.

Recursos

Se você deseja aprender mais sobre esse procedimento armazenado, pode consultar os seguintes links:

Conclusão

Neste artigo, descrevemos brevemente os procedimentos sp_who, sp_who2 e sp_whoisactive e explicamos por que
    sp_whoisactive é mais poderoso e mais necessário para administradores de banco de dados.

Hadi Fadlallah
Últimas mensagens de Hadi Fadlallah (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br