SET SHOWPLAN_XML (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse Analytics (apenas pool de SQL dedicado)

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.

Convenções de sintaxe de Transact-SQL

Sintaxe

SET SHOWPLAN_XML { ON | OFF }

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

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á-las 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 seja 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 um relatório.

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

Observaçã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, confira 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.

Observação

Se Incluir Plano de Execução Real estiver selecionado no 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 esta opção SET.

Os planos de execução estimados por meio do SSMS e do SET SHOWPLAN_XML estão disponíveis para pools de SQL dedicados (antigo SQL DW) e pools de SQL dedicados no Azure Synapse Analytics. Para recuperar um plano de execução real para pools de SQL dedicados (antigo SQL DW) e pools de SQL dedicados no Azure Synapse Analytics, há comandos diferentes. Para mais informações, confira Monitorar a carga de trabalho do pool de SQL dedicado do Azure Synapse Analytics usando DMVs.

Local de saída de SHOWPLAN

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

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

No caminho anterior, o nó 130\ é usado pelo SQL Server 2016. O número de 130 deriva do primeiro nó do valor retornado por SELECT @@VERSION, que é 13. Para o SQL Server 2017, o caminho usaria 140\, porque o primeiro nó do seu valor @@VERSION é 14. Para o SQL Server 2019, o primeiro o valor de @@VERSION é 15. Para o SQL Server 2022, o primeiro o valor de @@VERSION é 16.

O Esquema de Plano de Execução também pode ser encontrado em Esquemas XML do Microsoft SQL Server.

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.

Para 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 USE *database_name*, SET, DECLARE, SQL dinâmico, e assim por diante, 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 usa menos recursos que a consulta não indexada.

USE AdventureWorks2022;
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;

Próximas etapas