Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base 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)