SET SHOWPLAN_TEXT (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase SQL in Microsoft Fabric

Impedisce l'esecuzione di istruzioni Transact-SQL di Microsoft SQL Server. e vengono restituite invece informazioni dettagliate sulla modalità di esecuzione delle istruzioni.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

  
SET SHOWPLAN_TEXT { ON | OFF }  

Osservazioni:

L'impostazione di viene impostata in fase di SET SHOWPLAN_TEXT esecuzione o in fase di esecuzione e non in fase di analisi.

Quando SET SHOWPLAN_TEXT è ON, SQL Server restituisce le informazioni di esecuzione per ogni istruzione Transact-SQL senza eseguirla. Quando l'opzione è impostata su ON, vengono restituite informazioni del piano di esecuzione su tutte le istruzioni Transact-SQL successive fino a quando l'opzione non viene reimpostata su OFF. Ad esempio, se una CREATE TABLE istruzione viene eseguita mentre SETSET SHOWPLAN_TEXT è ON, SQL Server restituisce un messaggio di errore da una successiva istruzione SELECT che coinvolge quella stessa tabella informando l'utente che la tabella specificata non esiste. I successivi riferimenti a tale tabella pertanto hanno esito negativo. Quando SET SHOWPLAN_TEXT è OFF, SQL Server esegue le istruzioni senza generare un report con le informazioni sul piano di esecuzione.

SET SHOWPLAN_TEXTè pensato per restituire output leggibili per applicazioni del prompt dei comandi Microsoft Win32 come l'utilità sqlcmd. SET SHOWPLAN_ALL restituisce output più dettagliati destinati a essere utilizzati con programmi progettati per gestirne l'output.

SET SET SHOWPLAN_TEXT e SETSET SHOWPLAN_ALL non possono essere specificati in una procedura memorizzata. Devono essere le uniche istruzioni in un batch.

SET SHOWPLAN_TEXTrestituisce le informazioni come un insieme di righe che formano un albero gerarchico che rappresenta i passaggi compiuti dal processore di query di SQL Server mentre esegue ogni istruzione. Ogni istruzione restituita nell'output include una singola riga contenente il testo dell'istruzione seguita da alcune righe che includono i dettagli dei passaggi dell'esecuzione. Nella tabella seguente vengono illustrate le colonne incluse nell'output.

Nome colonna Descrizione
StmtText Per righe che non sono di tipo PLAN_ROW, questa colonna include il testo dell'istruzione Transact-SQL. Per righe di tipo PLAN_ROW, include una descrizione dell'operazione. La colonna include l'operatore fisico e facoltativamente l'operatore logico. Può essere inoltre seguita da una descrizione determinata dall'operatore fisico. Per maggiori informazioni sugli operatori fisici, vedi la colonna Argomento in SET SHOWPLAN_ALL (Transact-SQL).

Per altre informazioni sugli operatori fisici e logici che possono essere visualizzati nell'output Showplan, vedere Guida di riferimento a operatori Showplan logici e fisici.

Autorizzazioni

Per usare SETSET SHOWPLAN_TEXT, devi avere permessi sufficienti per eseguire le istruzioni su cui SETSET SHOWPLAN_TEXT viene eseguito, e devi avere il permesso SHOWPLAN per tutti i database contenenti oggetti di riferimento.

Per le istruzioni SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure ed EXEC user_defined_function , per produrre un Showplan l'utente deve:

  • Autorizzazioni appropriate per l'esecuzione delle istruzioni Transact-SQL.

  • Autorizzazione SHOWPLAN su tutti i database contenenti oggetti a cui fanno riferimento le istruzioni Transact-SQL, ad esempio tabelle, viste e così via.

Per tutte le altre istruzioni, come DDL, USE database_name, SETDECLARE, SQL dinamico e così via, sono necessarie solo le autorizzazioni appropriate per eseguire le istruzioni Transact-SQL.

Esempi

In questo esempio viene illustrato l'utilizzo degli indici in SQL Server durante l'elaborazione di istruzioni.

Questa query utilizza un indice:

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

Set di risultati:

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)   

Questa query non utilizza un indice:

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

Set di risultati:

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]))  

Vedi anche

Operatori (Transact-SQL)
SET Istruzioni (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)