Partilhar via


SET SHOWPLAN_TEXT (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Faz com que o Microsoft SQL Server não execute Transact-SQL instruções. Em vez disso, o SQL Server devolve informações detalhadas sobre como as instruções são executadas.

Transact-SQL convenções de sintaxe

Sintaxe

  
SET SHOWPLAN_TEXT { ON | OFF }  

Observações

A definição de SET SHOWPLAN_TEXT é definida em tempo de execução ou execução e não em tempo de análise sintética.

Quando o SET SHOWPLAN_TEXT está LIGADO, o SQL Server devolve informação de execução para cada Transact-SQL instrução sem a executar. Depois de esta opção ser ativada, a informação do plano de execução sobre todas as instruções SQL Server subsequentes é devolvida até que a opção seja desativada. Por exemplo, se uma instrução CREATE TABLE for executada enquanto o SET SHOWPLAN_TEXT está ON, o SQL Server devolve uma mensagem de erro de uma instrução SELECT subsequente envolvendo essa mesma tabela informando o utilizador de que a tabela especificada não existe. Portanto, as referências subsequentes a esta tabela falham. Quando o SET SHOWPLAN_TEXT está DESLIGADO, o SQL Server executa instruções sem gerar um relatório com informação do plano de execução.

O SET SHOWPLAN_TEXT destina-se a devolver saída legível para aplicações de prompt de comandos Microsoft Win32, como a utilidade sqlcmd . O SET SHOWPLAN_ALL devolve uma saída mais detalhada, destinada a ser usada com programas concebidos para gerir a sua saída.

SET SHOWPLAN_TEXT e SET SHOWPLAN_ALL não podem ser especificados num procedimento armazenado. Devem ser as únicas declarações num lote.

O SET SHOWPLAN_TEXT devolve informação como um conjunto de linhas que formam uma árvore hierárquica que representa os passos dados pelo processador de consultas SQL Server à medida que executa cada instrução. Cada instrução refletida na saída contém uma única linha com o texto da declaração, seguida de várias linhas com os detalhes dos passos de execução. A tabela mostra a coluna que a saída contém.

Nome da coluna Description
StmtText Para linhas que não são do tipo PLAN_ROW, esta coluna contém o texto da afirmação Transact-SQL. Para linhas do tipo PLAN_ROW, esta coluna contém uma descrição da operação. Esta coluna contém o operador físico e pode, opcionalmente, também conter o operador lógico. Esta coluna pode também ser seguida por uma descrição determinada pelo operador físico. Para mais informações sobre operadores físicos, consulte a coluna Argumento em SET SHOWPLAN_ALL (Transact-SQL).

Para mais informações sobre os operadores físicos e lógicos que podem ser vistos na saída do Showplan, consulte a Referência de Operadores Lógicos e Físicos do Plano Showplan

Permissions

Para usar o SET SHOWPLAN_TEXT, deve ter permissões suficientes para executar as instruções sobre as quais o SET SHOWPLAN_TEXT é executado, e deve ter permissão SHOWPLAN para todas as bases de dados que contenham objetos referenciados.

Para as instruções SELECT, INSERT, UPDATE, DELETE , EXEC stored_procedure e EXEC user_defined_function , para produzir um Showplan, o utilizador deve:

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

  • Tenha 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 apropriadas para executar as instruções Transact-SQL.

Examples

Este exemplo mostra como os índices são usados pelo SQL Server enquanto processa as instruções.

Esta é a consulta usando um índice:

USE AdventureWorks2022;  
GO  
SET SHOWPLAN_TEXT ON;  
GO  
SELECT *  
FROM Production.Product   
WHERE ProductID = 905;  
GO  
SET SHOWPLAN_TEXT OFF;  
GO  

Aqui está o conjunto de resultados:

StmtText                                             
---------------------------------------------------  
SELECT *  
FROM Production.Product   
WHERE ProductID = 905;   
  
StmtText                                                                                                                                                                                        
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
|--Clustered Index Seek(OBJECT:([AdventureWorks2022].[Production].[Product].[PK_Product_ProductID]), SEEK:([AdventureWorks2022].[Production].[Product].[ProductID]=CONVERT_IMPLICIT(int,[@1],0)) ORDERED FORWARD)   

Aqui está a consulta que não utiliza um índice:

USE AdventureWorks2022;  
GO  
SET SHOWPLAN_TEXT ON;  
GO  
SELECT *  
FROM Production.ProductCostHistory  
WHERE StandardCost < 500.00;  
GO  
SET SHOWPLAN_TEXT OFF;  
GO  

Aqui está o conjunto de resultados:

StmtText                                                                  
------------------------------------------------------------------------  
SELECT *  
FROM Production.ProductCostHistory  
WHERE StandardCost < 500.00;   
  
StmtText                                                                                                                                                                                                  
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
|--Clustered Index Scan(OBJECT:([AdventureWorks2022].[Production].[ProductCostHistory].[PK_ProductCostHistory_ProductCostID]), WHERE:([AdventureWorks2022].[Production].[ProductCostHistory].[StandardCost]<[@1]))  

Ver também

Operadores (Transact-SQL)
Instruções SET (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)