Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Ao criar um guia de plano, você pode usar o SQL Server Profiler para capturar o texto de consulta exato para uso no argumento statement_text do procedimento armazenado sp_create_plan_guide. Isso ajuda a garantir que o guia de plano seja associado à consulta no momento da compilação. Depois que o guia de plano é criado, o SQL Server Profiler também pode ser usado para testar se o guia de plano está, de fato, sendo correspondido à consulta. Geralmente, você deve testar guias de plano usando o SQL Server Profiler para verificar se sua consulta está sendo correspondida ao seu guia de plano.
Capturando texto de consulta usando o SQL Server Profiler
Se você executar uma consulta e capturar o texto exatamente como foi enviado ao SQL Server usando o SQL Server Profiler, poderá criar um guia de plano do tipo SQL ou TEMPLATE que corresponderá exatamente ao texto da consulta. Isso garante que o guia de plano seja usado pelo otimizador de consulta.
Considere a seguinte consulta enviada por um aplicativo como um lote autônomo:
SELECT COUNT(*) AS c
FROM Sales.SalesOrderHeader AS h
INNER JOIN Sales.SalesOrderDetail AS d
ON h.SalesOrderID = d.SalesOrderID
WHERE h.OrderDate BETWEEN '20000101' and '20050101';
Suponha que tu queiras que esta consulta seja executada usando uma operação de junção por mesclagem, mas SHOWPLAN indica que a consulta não está usando uma junção por mesclagem. Não é possível alterar a consulta diretamente na aplicação, por isso, em alternativa, cria-se um guia de plano para especificar que a dica de consulta MERGE JOIN seja adicionada à consulta no momento da compilação.
Para capturar o texto da consulta exatamente como o SQL Server a recebe, siga estas etapas:
Inicie um rastreamento do SQL Server Profiler, certificando-se de que o tipo de evento SQL:BatchStarting está selecionado.
Faça com que o aplicativo execute a consulta.
Pause o rastreamento do SQL Server Profiler.
Clique no evento SQL:BatchStarting, que corresponde à consulta.
Clique com o botão direito do mouse e selecione Extrair dados do evento.
Importante
Não tente copiar o texto do lote selecionando-o no painel inferior da janela de rastreamento do Profiler. Isso pode fazer com que o guia de plano criado não corresponda ao lote original.
Salve os dados do evento em um arquivo. Este é o texto do lote.
Abra o arquivo de texto em lote no Bloco de Notas e copie o texto para o buffer de copiar e colar.
Crie o guia de plano e cole o texto copiado dentro das aspas ('') especificadas para o argumento @stmt. Você deve escapar de aspas simples no argumento @stmt precedendo-as com outras aspas simples. Tenha cuidado para não adicionar ou remover quaisquer outros caracteres quando inserir estas aspas simples. Por exemplo, a data literal '20000101' deve ser delimitada como ''20000101''.
Aqui está o guia do plano:
EXEC sp_create_plan_guide
@name = N'MyGuide1',
@stmt = N'<paste the text copied from the batch text file here>',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (MERGE JOIN)';
Guias para planos de teste usando o SQL Server Profiler
Para verificar se um guia de plano está a corresponder a uma consulta, siga estas etapas:
Inicie um rastreamento do SQL Server Profiler, certificando-se de que o tipo de evento Showplan XML está selecionado (localizado no nó Desempenho).
Faça com que o aplicativo execute a consulta.
Pause o rastreamento do SQL Server Profiler.
Encontre o evento Showplan XML para a consulta afetada.
Observação
O Showplan XML for Query Compile evento não pode ser usado. PlanGuideDB não existe nesse evento.
Se o guia de plano for do tipo OBJECT ou SQL, verifique se o evento Showplan XML contém os atributos PlanGuideDB e PlanGuideName para o guia de plano que esperava corresponder à consulta. Ou, no caso de um guia de plano TEMPLATE, verifique se o evento Showplan XML contém os atributos TemplatePlanGuideDB e TemplatePlanGuideName para o guia de plano esperado. Isto confirma que o guia do plano está a funcionar. Esses atributos estão contidos no <StmtSimple> elemento do plano.