Tenho um estoque de definições de rastreamento com script que uso para diferentes níveis de diagnóstico, nenhum dos quais é filtrado por HostName. Eu precisava filtrar o tráfego por host hoje, então:
- Perfilador acionado
- Criou um traço vazio
- Adicionado SP: Iniciar/Concluir
- Defina um filtro no nome do host
- Script para o arquivo test.sql
Arquivo aberto no SSMS, sem sinal do filtro. Enxágue, repita, o mesmo novamente. Supondo que eu estava fazendo algo estúpido , procurei o valor a ser usado (mais difícil de encontrar do que deveria ser!) E adicionei à minha definição de rastreamento manualmente, o que funcionou.
EXEC sp_trace_setfilter @TraceId, 8, 0, 6, N'MyHostName'
Voltei para verificar por que não consegui fazer isso funcionar no Profiler e no mesmo resultado. Eu encontrei a menção de que isso é um problema ao criar scripts para 2000 do SSMS, mas nenhuma menção a essa situação com os servidores SSMS2005/2008 a 2005/2008. Isso é um bug no Profiler?
Quando o script é gerado no Profiler 2005, o valor padrão salvo para o operador lógico é 1='OR', portanto, o rastreamento capturará mais informações do que pretendíamos inicialmente.
No Profiler >=2008, o script tem 0(AND) para a primeira ocorrência da coluna que está sendo filtrada.
Isso parece um bug no Profiler 2005.
Você precisa verificar se o arquivo de rastreamento do servidor possui a coluna incluída na lista de colunas para todos os seus eventos. Portanto, se você tiver eventos 10 e 12 (RPC:Completed e SQL:BatchCompleted), deverá executar sp_trace_setevent para todas as colunas, inclusive para a coluna Hostname:
onde 10 e 12 - eventos e 8 - coluna Hostname
sp_trace_setevent disse:
"Os usuários devem executar sp_trace_setevent para cada coluna adicionada para cada evento. Durante cada execução, se @on for definido como 1, sp_trace_setevent adiciona o evento especificado à lista de eventos do rastreamento. Se @on for definido como 0, sp_trace_setevent remove o evento especificado da lista."
Depois disso, o filtro deve funcionar corretamente.