SET SHOWPLAN_XML (Transact-SQL)

Si applica a:SQL Serverdatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse Analytics (solo pool SQL dedicato)Endpoint SQL analytics in Microsoft FabricWarehouse in Microsoft FabricDatabase SQL in Microsoft Fabric

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

Convenzioni relative alla sintassi Transact-SQL

Sintassi

SET SHOWPLAN_XML { ON | OFF }

Osservazioni:

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

Quando SET SHOWPLAN_XML è ON, SQL Server restituisce informazioni sul piano di esecuzione per ogni istruzione senza eseguirla, e Transact-SQL istruzioni 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. Ad esempio, se una CREATE TABLE istruzione viene eseguita mentre SETSET SHOWPLAN_XML è ON, SQL Server restituisce un messaggio di errore da una successiva istruzione SELECT che coinvolge quella stessa tabella; la tabella specificata non esiste. I successivi riferimenti a tale tabella pertanto hanno esito negativo. Quando SET SHOWPLAN_XML è OFF, SQL Server esegue le istruzioni senza generare un report.

SET SHOWPLAN_XML è pensato per restituire l'output come nvarchar(max) per applicazioni come l'utilità sqlcmd , dove l'output XML viene successivamente utilizzato da altri strumenti per visualizzare ed elaborare le informazioni del piano di interrogazione.

Nota

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

SET SHOWPLAN_XML non può essere specificato all'interno di una procedura memorizzata. Deve essere l'unica istruzione in un batch.

SET SHOWPLAN_XML restituisce le informazioni come un insieme di documenti XML. Ogni lotto dopo l'istruzione SET SHOWPLAN_XML ON è riflesso nell'output da un singolo 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.

Nota

Se in SQL Server Management Studio viene selezionato Include Actual Execution Plan, questa SET opzione non produce output XML Showplan. Cancella il pulsante Include Actual Execution Plan prima di utilizzare questa SET opzione.

Piani di esecuzione stimati tramite SSMS sono SET SHOWPLAN_XML disponibili per pool SQL dedicati (precedentemente SQL DW) e pool SQL dedicati in Azure Synapse Analytics. Per recuperare un piano di esecuzione effettivo per pool SQL dedicati (in precedenza SQL Data Warehouse) e pool SQL dedicati in Azure Synapse Analytics, sono disponibili comandi diversi. Per altre informazioni, vedere Monitorare il carico di lavoro del pool SQL Azure Synapse Analytics tramite DMV.

Percorso dell'output SHOWPLAN

Il documento contenente lo schema XML per l'output XML viene SET SHOWPLAN_XML copiato durante l'installazione in una directory locale sul computer su cui è installato Microsoft SQL Server. Il documento è reperibile nell'unità contenente i file di installazione di SQL Server, in un percorso simile al seguente:

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

Nel percorso precedente, il nodo 130\ viene usato da SQL Server 2016. Il numero 130 è derivato dal primo nodo del valore restituito da SELECT @@VERSION, che è 13. Per SQL Server 2017 il percorso userà 140\, perché il primo nodo del relativo @@VERSION valore è 14. SQL Server 2019 il primo valore di @@VERSION è 15. SQL Server 2022 il primo valore di @@VERSION è 16.

Lo schema Showplan è disponibile anche in Xml Schema di Microsoft SQL Server.

Autorizzazioni

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

Per SELECTle istruzioni , INSERTUPDATEDELETEEXEC *stored_procedure*e EXEC *user_defined_function* , per produrre un oggetto 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, ad esempio DDL, USE *database_name*, SET, DECLARE, SQL dinamico e così via, sono necessarie solo le autorizzazioni appropriate per eseguire le istruzioni Transact-SQL.

Esempi

Le due affermazioni che seguono utilizzano le SET SHOWPLAN_XML impostazioni per mostrare il modo in cui SQL Server analizza e ottimizza l'uso degli indici nelle query.

La prima query usa l'operatore di confronto Equals (=) 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 in EstimateRows e gli EstimatedTotalSubtreeCost attributi sono più piccoli per la prima query indicizzata, a indicare che viene elaborato molto più velocemente e usa meno risorse rispetto alla query non indicizzata.

USE AdventureWorks2022;
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;

Passaggi successivi