Crie um rastreamento SQL sem usar o SQL Profiler

4

Eu já li antes que é possível criar um rastreador do SQL profiler que grava diretamente em uma tabela sem precisar usar o profiler do SQL - aparentemente isso é melhor do que ter o profiler do SQL sendo executado como o profiler do SQL captura todos os eventos e, em seguida, filtra as entradas no próprio profiler para exibir apenas as especificadas no filtro atual. O rastreamento direto coleta apenas eventos especificados no próprio rastreio, resultando em menos impacto no próprio servidor.

Eu quero configurar um rastreamento que registre todas as consultas que levam mais de um segundo para serem executadas, mas agora não consigo encontrar esse artigo novamente.

    
por Justin 07.10.2009 / 14:13

3 respostas

6

Foi-me mostrado um truque para fazer exatamente isso. Você pode facilmente obter a definição de rastreio criando seu rastreio com o SQL Profiler, iniciando-o e, em seguida, parando-o imediatamente. Nesse ponto, o Profiler permitirá que você exporte as instruções SQL para criar a mesma coisa no lado do servidor. Você ainda precisará modificar alguns pontos de dados como mrdenny observou, mas a maior parte do trabalho é criar o rastreamento do lado do servidor. A localização desse comando no SQL2005 + é Arquivo > Exportar > Definição de Rastreamento de Script; no SQL2000 está em File > Rastreamento de script.

    
por 07.10.2009 / 19:22
3

Sim, é recomendado que os rastreamentos do "lado do servidor" sejam usados em um ambiente de produção em vez de usar o SQL Profiler para rastrear o "lado cliente", não porque o gerador de perfil captura todos os eventos, mas devido à sobrecarga de memória e rede necessária na execução do Profiler .

Como já foi sugerido, a melhor maneira de criar um rastreamento do lado do servidor é configurar sua filtragem no SQL Server Profiler e exportar o rastreamento para um script.

Há um ótimo artigo passo-a-passo sobre sqlserverpedia que explica como fazer isso , este é o artigo que você procurava?

    
por 07.10.2009 / 19:33
2

A execução do SQL Profiler (com o profiler em execução em um cliente) e a execução de um rastreio a partir de T / SQL farão exatamente a mesma coisa. A filtragem é toda feita no servidor.

Isso pode ser visto configurando um rastreio do SQL Profiler para monitorar o SQL PRofiler e, em seguida, iniciar esse rastreio. Em seguida, configure um segundo rastreio para manipular o que você deseja e inicie o segundo rastreio. No primeiro rastreio, você verá todos os comandos T / SQL para criar o rastreio e configurar a filtragem.

Você precisará ajustar o código para usar as variáveis T / SQL para lidar com o fato de que o TraceId pode ser diferente daquele usado quando você configura o rastreamento de amostra.

    
por 07.10.2009 / 17:52