Configurei um rastreamento do SQL Server para capturar consultas de longa duração na minha caixa do SQL Server 2014 e adicionei o evento Showplan XML para capturar o plano de execução das consultas. O rastreamento foi criado com filtro de duração. Durante os testes, descobri que o Showplan XML não levava em consideração o filtro de duração e estava mostrando o plano de execução para todas as consultas. Eu estava esperando apenas as consultas com meu filtro de duração e seus planos de execução no rastreamento. No entanto, este não foi o caso. Ele estava mostrando as consultas de filtro de duração corretamente, mas o plano de execução estava sendo registrado para todas as consultas.
Alguém sabe como contornar esse problema no rastreamento do SQL Server?
O evento SHOWPLAN XML não possui uma coluna com duração da CPU, portanto não é possível filtrar por duração. Você só pode filtrar por colunas mencionadas neste artigo.
https://learn.microsoft.com/en-us/sql/relational-databases/event-classes/showplan-xml-event-class
Poucas alternativas:
use filtro por outras colunas permitidas.
capture tudo pelo menor tempo possível, carregue na mesa e filtre. Tenha cuidado com a carga gerada por este processo, principalmente no servidor de produção.
Trace para consultas de longa duração. Use essa lista para filtrar o evento SHOWPLAN XML.
A solução antiga para isso era fazer com que seu SQL Trace registrasse em uma tabela e, assim que o rastreamento fosse iniciado, criasse um gatilho AFTER INSERT nessa tabela. O gatilho então escreveria o plano de execução em uma tabela diferente.
No entanto, como você está no SQL2014, você realmente deveria estar usando Eventos Estendidos. Existem várias maneiras de fazer isso com o XE que são todas superiores.
Aqui está um exemplo de exatamente o que você está tentando realizar.