SET SHOWPLAN_XML (Transact-SQL)SET SHOWPLAN_XML (Transact-SQL)

APLICA-SE A: SimSQL Server SimBanco de Dados SQL do Azure SimAzure Synapse Analytics (SQL DW) NãoParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database YesAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Faz com que o SQL ServerSQL Server não execute instruções Transact-SQLTransact-SQL.Causes SQL ServerSQL Server not to execute Transact-SQLTransact-SQL statements. Em vez disso, o SQL ServerSQL Server retorna informações detalhadas sobre como as instruções serão executadas no formulário de um documento XML bem-definido.Instead, SQL ServerSQL Server returns detailed information about how the statements are going to be executed in the form of a well-defined XML document.

Ícone de link do tópico Convenções da sintaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

SET SHOWPLAN_XML { ON | OFF }

ComentáriosRemarks

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.The setting of SET SHOWPLAN_XML is set at execute or run time and not at parse time.

Quando SET SHOWPLAN_XML for ON, SQL ServerSQL Server retornará informações de plano de execução para cada instrução sem executá-la, e as instruções do Transact-SQLTransact-SQL não serão executadas.When SET SHOWPLAN_XML is ON, SQL ServerSQL Server returns execution plan information for each statement without executing it, and Transact-SQLTransact-SQL statements are not executed. Depois que essa opção estiver definida como ON, as informações do plano de execução sobre todas as instruções Transact-SQLTransact-SQL subsequentes serão retornadas, até que a opção esteja definida como OFF.After this option is set ON, execution plan information about all subsequent Transact-SQLTransact-SQL statements is returned until the option is set OFF. Por exemplo, se uma instrução CREATE TABLE for executada enquanto SET SHOWPLAN_XML estiver definido como ON, o SQL ServerSQL Server retornará uma mensagem de erro de uma instrução SELECT subsequente, envolvendo essa mesma tabela. A tabela especificada não existe.For example, if a CREATE TABLE statement is executed while SET SHOWPLAN_XML is ON, SQL ServerSQL Server returns an error message from a subsequent SELECT statement involving that same table; the specified table does not exist. Portanto, haverá falha nas referências subsequentes para essa tabela.Therefore, subsequent references to this table fail. Quando SET SHOWPLAN_XML for OFF, o SQL ServerSQL Server executará as instruções sem gerar relatório.When SET SHOWPLAN_XML is OFF, SQL ServerSQL Server executes the statements without generating a report.

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.SET SHOWPLAN_XML is intended to return output as nvarchar(max) for applications such as the sqlcmd utility, where the XML output is subsequently used by other tools to display and process the query plan information.

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.The dynamic management view, sys.dm_exec_query_plan, returns the same information as SET SHOWPLAN XML in the xml data type. Essas informações são retornadas da coluna query_plan de sys.dm_exec_query_plan.This information is returned from the query_plan column of sys.dm_exec_query_plan. Para obter mais informações, confira sys.dm_exec_query_plan (Transact-SQL).For more information, see sys.dm_exec_query_plan (Transact-SQL).

SET SHOWPLAN_XML não pode ser especificado em um procedimento armazenado.SET SHOWPLAN_XML cannot be specified inside a stored procedure. Ele precisa ser a única instrução em um lote.It must be the only statement in a batch.

SET SHOWPLAN_XML retorna informações como um conjunto de documentos XML.SET SHOWPLAN_XML returns information as a set of XML documents. Cada lote posterior à instrução SET SHOWPLAN_XML ON é refletido na saída por um único documento.Each batch after the SET SHOWPLAN_XML ON statement is reflected in the output by a single document. Cada documento contém o texto das instruções do lote, seguido dos detalhes das etapas de execução.Each document contains the text of the statements in the batch, followed by the details of the execution steps. 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.The document shows the estimated costs, numbers of rows, accessed indexes, and types of operators performed, join order, and more information about the execution plans.

Observação

Se Incluir Plano de Execução Real estiver selecionado no SQL Server Management StudioSQL Server Management Studio, essa opção SET não produzirá a saída do plano de execução XML.If Include Actual Execution Plan is selected in SQL Server Management StudioSQL Server Management Studio, this SET option does not produce XML Showplan output. Desmarque o botão Incluir Plano de Execução Real antes de usar esta opção SET.Clear the Include Actual Execution Plan button before using this SET option.

Local de saída de SHOWPLANLocation of SHOWPLAN output

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 ServerSQL Server está instalado.The document containing the XML schema for the XML output by SET SHOWPLAN_XML is copied during setup to a local directory on the computer on which Microsoft SQL ServerSQL Server is installed. O documento pode ser encontrado na unidade que contém os arquivos de instalação SQL ServerSQL Server, em um caminho semelhante ao seguinte:The document can be found on the drive containing the SQL ServerSQL Server installation files, at a path similar to the following:

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

No caminho anterior, o nó 130\ é usado pelo SQL Server 2016.In the preceding path, the node 130\ is used by SQL Server 2016. O número de 130 deriva do primeiro nó do valor retornado por SELECT @@VERSION, que é 13.The number 130 is derived from the first node of the value returned by SELECT @@VERSION, which is 13. Para o SQL Server 2017, o caminho usaria 140\, porque o primeiro nó do seu valor @@VERSION é 14.For SQL Server 2017 the path would use 140\, because the first node of its @@VERSION value is 14. Para SQL Server 2019, o primeiro o valor de @@VERSION é 15.For SQL Server 2019 the first value from @@VERSION is 15.

O esquema do plano de execução também pode ser encontrado neste site.The Showplan Schema can also be found at this Web site.

PermissõesPermissions

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.In order to use SET SHOWPLAN_XML, you must have sufficient permissions to execute the statements on which SET SHOWPLAN_XML is executed, and you must have SHOWPLAN permission for all databases containing referenced objects.

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 precisa:For SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure, and EXEC user_defined_function statements, to produce a Showplan the user must:

  • Ter as permissões apropriadas para executar as instruções Transact-SQLTransact-SQL.Have the appropriate permissions to execute the Transact-SQLTransact-SQL statements.

  • Ter permissão SHOWPLAN em todos os bancos de dados que contenham objetos referenciados pelas instruções Transact-SQLTransact-SQL, como tabelas, exibições e assim por diante.Have SHOWPLAN permission on all databases containing objects referenced by the Transact-SQLTransact-SQL statements, such as tables, views, and so on.

Para todas as outras instruções, como DDL, 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-SQLTransact-SQL.For all other statements, such as DDL, USE database_name, SET, DECLARE, dynamic SQL, and so on, only the appropriate permissions to execute the Transact-SQLTransact-SQL statements are needed.

ExemplosExamples

As duas instruções a seguir usam as configurações SET SHOWPLAN_XML para mostrar o modo pelo qual o SQL ServerSQL Server analisa e otimiza o uso de índices em consultas.The two statements that follow use the SET SHOWPLAN_XML settings to show the way SQL ServerSQL Server analyzes and optimizes the use of indexes in queries.

A primeira consulta usa o operador de comparação Igual (=) na cláusula WHERE em uma coluna indexada.The first query uses the Equals comparison operator (=) in the WHERE clause on an indexed column. A segunda consulta usa o operador LIKE na cláusula WHERE.The second query uses the LIKE operator in the WHERE clause. Isso força o SQL ServerSQL Server a usar uma verificação de índice clusterizado e a localizar os dados que satisfazem a condição da cláusula WHERE.This forces SQL ServerSQL Server to use a clustered index scan and find the data meeting the WHERE clause condition. 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.The values in the EstimateRows and the EstimatedTotalSubtreeCost attributes are smaller for the first indexed query, indicating that it is processed much faster and uses fewer resources than the nonindexed query.

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émSee Also

Instruções SET (Transact-SQL)SET Statements (Transact-SQL)