Condividi tramite


SET SHOWPLAN_XML (Transact-SQL)

Impedisce l'esecuzione delle istruzioni Transact-SQL in Microsoft SQL Server. SQL Server restituisce invece informazioni dettagliate sulla modalità di esecuzione delle istruzioni sotto forma di documento XML ben definito.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

SET SHOWPLAN_XML { ON | OFF }

Osservazioni

L'opzione SET SHOWPLAN_XML viene impostata in fase di esecuzione, non in fase di analisi.

Quando l'opzione SET SHOWPLAN_XML è impostata su ON, SQL Server restituisce le informazioni sul piano di esecuzione per ciascuna istruzione, senza eseguirla. Le istruzioni Transact-SQL non vengono eseguite. 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. Se, ad esempio, si esegue un'istruzione CREATE TABLE quando l'opzione SET SHOWPLAN_XML è impostata su ON, SQL Server restituisce un messaggio di errore per una successiva istruzione SELECT che interessa la stessa tabella. La tabella specificata non esiste. I successivi riferimenti a tale tabella pertanto hanno esito negativo. Quando l'opzione SET SHOWPLAN_XML è impostata su OFF, le istruzioni vengono eseguite da SQL Server senza la generazione di alcun report.

SET SHOWPLAN_XML è stata creata specificatamente per la restituzione di output come nvarchar(max) per applicazioni quali l'utilità sqlcmd, in cui l'output XML viene successivamente utilizzato da altri strumenti per visualizzare ed elaborare le informazioni del piano della query.

[!NOTA]

La vista a gestione dinamica, sys.dm_exec_query_plan, restituisce le stesse informazioni di SET SHOWPLAN XML nel tipo di dati xml. Queste informazioni sono restituite dalla colonna query_plan di sys.dm_exec_query_plan. Per ulteriori informazioni, vedere sys.dm_exec_query_plan (Transact-SQL).

Non è possibile specificare SET SHOWPLAN_XML all'interno di una stored procedure. Deve essere l'unica istruzione in un batch.

SET SHOWPLAN_XML restituisce le informazioni come set di documenti XML. Ogni batch dopo l'istruzione SET SHOWPLAN_XML ON viene restituito nell'output da un unico documento. Ogni documento contiene il testo delle istruzioni nel batch, seguito dai dettagli dei passaggi dell'esecuzione. Nel documento vengono illustrati i costi stimati, il numero di righe, gli indici utilizzati e i tipi di operatori eseguiti, l'ordine di join e ulteriori informazioni sui piani di esecuzione.

Il documento contenente l'XML Schema per l'output XML di SET SHOWPLAN_XML viene copiato durante l'installazione in una directory locale nel computer in cui è installato Microsoft SQL Server. Si trova nell'unità contenente i file di installazione di SQL Server, nel percorso seguente:

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

Lo schema Showplan è inoltre reperibile in questo sito Web.

[!NOTA]

Se Includi piano di esecuzione effettivo è selezionato in SQL Server Management Studio, l'opzione SET non genera alcun output di Showplan XML. Prima di utilizzare l'opzione SET, deselezionare il pulsante Includi piano di esecuzione effettivo.

Autorizzazioni

Per poter utilizzare SET SHOWPLAN_XML, è necessario disporre delle autorizzazioni sufficienti per eseguire le istruzioni in cui SET SHOWPLAN_XM viene eseguito, nonché l'autorizzazione SHOWPLAN per tutti i database contenenti oggetti di riferimento.

Per poter generare uno Showplan con le istruzioni SELECT, INSERT, UPDATE, DELETE, EXEC  stored_procedure e EXEC user_defined_function, l'utente deve disporre di:

  • 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, ad esempio DDL, USE database_name, SET, DECLARE, SQL dinamico, e così via, sono necessarie soltanto le autorizzazioni appropriate per eseguire le istruzioni Transact-SQL.

Esempi

Nelle due istruzioni seguenti vengono utilizzate le impostazioni dell'opzione SET SHOWPLAN_XML per illustrare l'analisi e l'ottimizzazione dell'utilizzo degli indici nelle query in SQL Server.

La prima query utilizza l'operatore di confronto uguale a (=) nella clausola WHERE in una colonna indicizzata. La seconda query utilizza l'operatore LIKE nella clausola WHERE. In tal modo viene imposta l'esecuzione di un'analisi di indice cluster in SQL Server per individuare i dati che soddisfano la condizione della clausola WHERE. I valori negli attributi EstimateRows e TotalSubtreeCost della prima query indicizzata sono inferiori, a indicare che la query è stata elaborata molto più rapidamente con un numero di risorse inferiore rispetto alla query non indicizzata.

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;

Vedere anche

Riferimento

Istruzioni SET (Transact-SQL)