T-SQL - OPTION (FAST x) e sinalizador de rastreamento 8722

9

Pesquisei há muito tempo e ainda não encontrei a resposta para o meu problema.

Nosso Dynamics AX está gerando consultas com a dica de consulta OPTION (FAST x), que às vezes força o uso de um plano de execução incorreto. Os desenvolvedores dizem que é por padrão e difícil de alterar (deve ser corrigido em todos os formulários potencialmente).

Então, eu estava procurando uma maneira de substituir essas dicas usando sinalizadores de rastreamento. Encontrei o adorável sinalizador de rastreamento 8722, que afirma fazer o SQL Server ignorar algumas dicas de consulta, especialmente as da cláusula OPTION.

No entanto, isso não funciona no meu caso. Tentei também ativar o sinalizador de rastreamento 8602 (desativar dicas de índice), mas minha consulta ainda está em execução com a dica FAST x (é muito mais lenta do que quando eu removo a cláusula OPTION).

Tentei limpar o cache do plano também, sem sucesso.

Alguma ideia? Estou faltando alguma coisa?

PS Habilitei os sinalizadores de rastreamento globalmente, esta é a edição do SQL Server 2012 Developer

Nelson 2.0
fonte
11
Como você ativou os sinalizadores de rastreamento? Você o ativou através da inicialização do servidor ou usando o dbcc traceon? dbcc traceon é um sinalizador de rastreamento por conexão, portanto, ativá-lo em uma conexão de cliente não afeta outras conexões de servidor. Para ativá-lo no servidor, você precisa adicionar -T <traceflagnumber> à linha de comando de inicialização. Acredito que você possa usar um traceon dbcc (flag1, flag2, ..., - 1) para aplicá-lo em todo o servidor, mas nunca tentei.
Mike
Olá Mike, habilitei os sinalizadores de rastreamento globalmente usando DBCC TRACEON (8722, -1) e verifiquei o status com DBCC TRACESTATUS. Talvez o sinalizador de rastreamento não seja mais oficialmente suportado ou eu precise colocá-lo no parâmetro de inicialização e reiniciar o serviço ou seja o assunto do CU3 (estou executando o 2012 SP2 RTM).

Respostas:

10

Tanto quanto eu sei, os sinalizadores de rastreamento 8722, 8755 e 8602 nunca foram oficialmente documentados. A última vez que lembro que eles foram eficazes foi no SQL Server 2000, portanto, não é de surpreender que você descubra que eles são ignorados no SQL Server 2012.

Para padrões de consulta específicos, geralmente é possível remover a FAST ndica usando guias de plano. Mesmo assim, a melhor solução é fazer com que os desenvolvedores do AX o consertem no lado do aplicativo.

Paul White 9
fonte