SET SHOWPLAN_TEXT (Transact-SQL)SET SHOWPLAN_TEXT (Transact-SQL)

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure noAzure SQL Data Warehouse noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Impedisce l'esecuzione delle istruzioni SQL ServerSQL Server in Microsoft Transact-SQLTransact-SQL.Causes Microsoft SQL ServerSQL Server not to execute Transact-SQLTransact-SQL statements. SQL ServerSQL Server restituisce invece informazioni dettagliate sulla modalità di esecuzione delle istruzioni.Instead, SQL ServerSQL Server returns detailed information about how the statements are executed.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

  
SET SHOWPLAN_TEXT { ON | OFF }  

RemarksRemarks

L'opzione SET SHOWPLAN_TEXT viene impostata in fase di esecuzione, non in fase di analisi.The setting of SET SHOWPLAN_TEXT is set at execute or run time and not at parse time.

Quando l'opzione SET SHOWPLAN_TEXT è impostata su ON, SQL ServerSQL Server restituisce informazioni di esecuzione per ogni istruzione Transact-SQLTransact-SQL senza eseguire l'istruzione.When SET SHOWPLAN_TEXT is ON, SQL ServerSQL Server returns execution information for each Transact-SQLTransact-SQL statement without executing it. Quando l'opzione è impostata su ON, vengono restituite informazioni del piano di esecuzione su tutte le istruzioni SQL ServerSQL Server successive fino a quando l'opzione non viene reimpostata su OFF.After this option is set ON, execution plan information about all subsequent SQL ServerSQL Server statements is returned until the option is set OFF. Se, ad esempio, si esegue un'istruzione CREATE TABLE quando l'opzione SET SHOWPLAN_TEXT è impostata su ON, SQL ServerSQL Server restituisce un messaggio di errore di una successiva istruzione SELECT che interessa la stessa tabella, per informare gli utenti che la tabella specificata non esiste.For example, if a CREATE TABLE statement is executed while SET SHOWPLAN_TEXT is ON, SQL ServerSQL Server returns an error message from a subsequent SELECT statement involving that same table informing the user that the specified table does not exist. I successivi riferimenti a tale tabella pertanto hanno esito negativo.Therefore, subsequent references to this table fail. Quando l'opzione SET SHOWPLAN_TEXT è impostata su OFF, le istruzioni vengono eseguite da SQL ServerSQL Server senza la generazione di un report contenente informazioni del piano di esecuzione.When SET SHOWPLAN_TEXT is OFF, SQL ServerSQL Server executes statements without generating a report with execution plan information.

SET SHOWPLAN_TEXT è stata creata specificatamente per la restituzione di output leggibile in applicazioni del prompt dei comandi per Microsoft Win32, ad esempio l'utilità sqlcmd.SET SHOWPLAN_TEXT is intended to return readable output for Microsoft Win32 command prompt applications such as the sqlcmd utility. L'opzione SET SHOWPLAN_ALL restituisce un output più dettagliato per l'utilizzo in programmi per la gestione di output.SET SHOWPLAN_ALL returns more detailed output intended to be used with programs designed to handle its output.

Non è possibile specificare SET SHOWPLAN_TEXT e SET SHOWPLAN_ALLL all'interno di una stored procedure.SET SHOWPLAN_TEXT and SET SHOWPLAN_ALL cannot be specified in a stored procedure. Devono essere le uniche istruzioni in un batch.They must be the only statements in a batch.

L'opzione SET SHOWPLAN_TEXT restituisce informazioni sotto forma di un set di righe in un albero gerarchico che rappresenta i passaggi eseguiti da Query Processor di SQL ServerSQL Server per l'esecuzione delle varie istruzioni.SET SHOWPLAN_TEXT returns information as a set of rows that form a hierarchical tree representing the steps taken by the SQL ServerSQL Server query processor as it executes each statement. 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.Each statement reflected in the output contains a single row with the text of the statement, followed by several rows with the details of the execution steps. Nella tabella seguente vengono illustrate le colonne incluse nell'output.The table shows the column that the output contains.

Nome colonnaColumn name DescrizioneDescription
StmtTextStmtText Per righe che non sono di tipo PLAN_ROW, questa colonna include il testo dell'istruzione Transact-SQLTransact-SQL.For rows which are not of type PLAN_ROW, this column contains the text of the Transact-SQLTransact-SQL statement. Per righe di tipo PLAN_ROW, include una descrizione dell'operazione.For rows of type PLAN_ROW, this column contains a description of the operation. La colonna include l'operatore fisico e facoltativamente l'operatore logico.This column contains the physical operator and may optionally also contain the logical operator. Può essere inoltre seguita da una descrizione determinata dall'operatore fisico.This column may also be followed by a description which is determined by the physical operator. Per altre informazioni sugli operatori fisici, vedere la colonna Argument in SET SHOWPLAN_ALL (Transact-SQL).For more information about physical operators, see the Argument column 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.For more information about the physical and logical operators that can be seen in Showplan output, see Showplan Logical and Physical Operators Reference

AutorizzazioniPermissions

Per poter utilizzare SET SHOWPLAN_TEXT, è necessario disporre delle autorizzazioni sufficienti per eseguire le istruzioni in cui SET SHOWPLAN_TEXT viene eseguito, nonché l'autorizzazione SHOWPLAN per tutti i database contenenti oggetti di riferimento.In order to use SET SHOWPLAN_TEXT, you must have sufficient permissions to execute the statements on which SET SHOWPLAN_TEXT is executed, and you must have SHOWPLAN permission for all databases containing referenced objects.

Per poter generare uno Showplan con le istruzioni SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure ed EXEC user_defined_function, l'utente deve avere:For SELECT, INSERT, UPDATE, DELETE, EXEC stored_procedure, and EXEC user_defined_function statements, to produce a Showplan the user must:

  • Autorizzazioni appropriate per l'esecuzione delle istruzioni Transact-SQLTransact-SQL.Have the appropriate permissions to execute the Transact-SQLTransact-SQL statements.

  • Autorizzazione SHOWPLAN su tutti i database contenenti oggetti a cui fanno riferimento le istruzioni Transact-SQL, ad esempio tabelle, viste e così via.Have SHOWPLAN permission on all databases containing objects referenced by the Transact-SQL statements, such as tables, views, and so on.

Per tutte le altre istruzioni, ad esempio DDL, USE database_name, SET, DECLARE, SQL dinamico e così via sono necessarie soltanto le autorizzazioni per l'esecuzione delle istruzioni 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.

EsempiExamples

In questo esempio viene illustrato l'utilizzo degli indici in SQL ServerSQL Server durante l'elaborazione di istruzioni.This example shows how indexes are used by SQL ServerSQL Server as it processes the statements.

Questa query utilizza un indice:This is the query using an index:

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

Set di risultati:Here is the result set:

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

Questa query non utilizza un indice:Here is the query not using an index:

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

Set di risultati:Here is the result set:

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

Vedere ancheSee Also

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