Compartilhar via


SET SHOWPLAN_XML (Transact-SQL)

Faz com que o SQL Server não execute instruções Transact-SQL. Em vez disso, o SQL Server retorna informações detalhadas sobre como as instruções serão executadas no formulário de um documento XML bem definido.

Ícone de vínculo de tópico Convenções de sintaxe Transact-SQL

Sintaxe

SET SHOWPLAN_XML { ON | OFF }

Comentários

A configuração de SHOWPLAN_XML é definida durante a execução ou o tempo de execução, e não no momento da análise.

Quando SET SHOWPLAN_XML for ON, o SQL Server retornará informações do plano de execução para cada instrução, sem executá-lo, e as instruções Transact-SQL não serão executadas. Depois que essa opção estiver definida como ON, as informações do plano de execução sobre todas as instruções Transact-SQL subsequentes serão retornadas, até que a opção esteja definida como OFF. Por exemplo, se uma instrução CREATE TABLE for executada enquanto SET SHOWPLAN_XML estiver definido como ON, o SQL Server retornará uma mensagem de erro de uma instrução SELECT subsequente, envolvendo essa mesma tabela. A tabela especificada não existe. Portanto, haverá falha nas referências subsequentes para essa tabela. Quando SET SHOWPLAN_XML for OFF, o SQL Server executará as instruções sem gerar relatório.

SET SHOWPLAN_XML deve ser usado para retornar a saída como nvarchar(max) para aplicativos, como o utilitário sqlcmd, em que a saída XML é subsequentemente utilizada por outras ferramentas para exibir e processar as informações do plano de consulta.

ObservaçãoObservação

A exibição de gerenciamento dinâmico sys.dm_exec_query_plan retorna as mesmas informações que SET SHOWPLAN XML para o tipo de dados xml. Essas informações são retornadas da coluna query_plan de sys.dm_exec_query_plan. Para obter mais informações, consulte sys.dm_exec_query_plan (Transact-SQL).

SET SHOWPLAN_XML não pode ser especificado em um procedimento armazenado. Ele precisa ser a única instrução em um lote.

SET SHOWPLAN_XML retorna informações como um conjunto de documentos XML. Cada lote posterior à instrução SET SHOWPLAN_XML ON é refletido na saída por um único documento. Cada documento contém o texto das instruções do lote, seguido dos detalhes das etapas de execução. O documento mostra os custos estimados, os números de linhas, os índices acessados e os tipos de operadores executados, a ordem de junção e mais informações sobre os planos de execução.

O documento que contém o esquema XML para a saída XML gerada por SET SHOWPLAN_XML é copiado durante a instalação em um diretório local no computador no qual o Microsoft SQL Server está instalado. Ele pode ser encontrado na unidade que contém os arquivos de instalação do SQL Server, em:

\Microsoft SQL Server\110\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd

O esquema de plano de execução também pode ser encontrado neste site da Web.

ObservaçãoObservação

Se Incluir Plano de Execução Real estiver selecionado no SQL Server Management Studio, essa opção SET não produzirá a saída do plano de execução XML. Desmarque o botão Incluir Plano de Execução Real antes de usar essa opção SET.

Permissões

Para usar SET SHOWPLAN_XML, é preciso ter permissões suficientes para executar as instruções nas quais SET SHOWPLAN_XML é executado e é preciso ter a permissão SHOWPLAN para todos os bancos de dados que contenham objetos referenciados.

Com relação às instruções SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure, e EXEC user_defined_function, para produzir um plano de execução, o usuário deve:

  • Ter as permissões apropriadas para executar as instruções Transact-SQL.

  • Ter permissão SHOWPLAN em todos os bancos de dados que contenham objetos referenciados pelas instruções Transact-SQL, como tabelas, exibições e assim por diante.

Para todas as outras instruções, como DDL, USE database_name, SET, DECLARE, SQL dinâmico, entre outras, são necessárias apenas as permissões adequadas para executar as instruções Transact-SQL.

Exemplos

As duas instruções a seguir usam as configurações SET SHOWPLAN_XML para mostrar o modo pelo qual o SQL Server analisa e otimiza o uso de índices em consultas.

A primeira consulta usa o operador de comparação Igual (=) na cláusula WHERE em uma coluna indexada. A segunda consulta usa o operador LIKE na cláusula WHERE. Isso força o SQL Server a usar uma verificação de índice clusterizado e a localizar os dados que satisfazem a condição da cláusula WHERE. Os valores nos atributos EstimateRows e EstimatedTotalSubtreeCost são menores na primeira consulta indexada, indicando que ela é processada com mais rapidez e que utiliza menos recursos que a consulta não indexada.

USE AdventureWorks2012;
GO
SET SHOWPLAN_XML ON;
GO
-- First query.
SELECT BusinessEntityID 
FROM HumanResources.Employee
WHERE NationalIDNumber = '509647174';
GO
-- Second query.
SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Production%';
GO
SET SHOWPLAN_XML OFF;

Consulte também

Referência

Instruções SET (Transact-SQL)