SET STATISTICS XML (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Fa sì che Microsoft SQL Server esegua istruzioni Transact-SQL e generi informazioni dettagliate sull'esecuzione delle istruzioni in un documento XML ben definito.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
SET STATISTICS XML { ON | OFF }
Osservazioni:
L'opzione SET STATISTICS XML viene impostata in fase di esecuzione, non in fase di analisi.
Se SET STATISTICS XML è impostata su ON, SQL Server restituisce informazioni sull'esecuzione di ogni istruzione. Quando l'opzione viene impostata su ON, vengono restituite informazioni su tutte le istruzioni Transact-SQL successive fino a quando l'opzione non viene impostata su OFF. Non è necessario che SET STATISTICS XML sia l'unica istruzione in un batch.
SET STATISTICS XML restituisce l'output come tipo nvarchar(max) per le applicazioni, come l'utilità sqlcmd, in cui l'output XML viene successivamente usato da altri strumenti per visualizzare ed elaborare le informazioni del piano di query.
SET STATISTICS XML restituisce le informazioni sotto forma di documenti XML. Ogni istruzione successiva all'istruzione SET STATISTICS XML ON è rappresentata nell'output da un documento specifico. Ogni documento contiene il testo dell'istruzione, seguito da informazioni dettagliate sui passaggi dell'esecuzione. L'output include informazioni ottenute durante l'esecuzione, quali i costi, gli indici utilizzati e i tipi di operazioni eseguite, l'ordine di join, il numero di esecuzioni di un'operazione fisica, il numero di righe prodotto da ogni operatore fisico e altro ancora.
Il documento contenente l'XML Schema per l'output XML di SET STATISTICS XML viene copiato, durante l'installazione, in una directory locale del 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\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd
Lo schema Showplan è inoltre reperibile in questo sito Web.
SET STATISTICS PROFILE e SET STATISTICS XML sono complementari. La prima crea output di testo, la seconda output XML. Nelle prossime versioni di SQL Server, le informazioni sui piani di esecuzione delle query verranno visualizzate solo mediante l'istruzione SET STATISTICS XML e non mediante l'istruzione SET STATISTICS PROFILE.
Nota
Se l'opzione Includi piano di esecuzione effettivo è selezionata in SQL Server Management Studio, l'opzione SET non genera alcun output di Showplan XML. Prima di usare l'opzione SET, deselezionare il pulsante Includi piano di esecuzione effettivo.
Autorizzazioni
Per utilizzare SET STATISTICS XML e visualizzare l'output, è necessario che gli utenti dispongano delle autorizzazioni seguenti:
Autorizzazioni appropriate per l'esecuzione delle istruzioni Transact-SQL.
Autorizzazione SHOWPLAN su tutti i database contenenti oggetti a cui viene fatto riferimento nelle istruzioni Transact-SQL.
Per le istruzioni Transact-SQL che non producono set di risultati STATISTICS XML, sono necessarie solo le autorizzazioni appropriate per l'esecuzione delle istruzioni Transact-SQL. Per le istruzioni Transact-SQL che producono set di risultati STATISTICS XML, devono venire superati i controlli sia dell'autorizzazione di esecuzione delle istruzioni Transact-SQL sia dell'autorizzazione SHOWPLAN. Negli altri casi l'esecuzione delle istruzioni Transact-SQL verrà annullata e non verranno generate informazioni Showplan.
Esempi
Nelle due istruzioni seguenti vengono usate le impostazioni dell'istruzione SET STATISTICS XML per illustrare l'analisi e l'ottimizzazione dell'utilizzo degli indici nelle query da parte di 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 da parte di SQL Server di un'analisi di indice cluster per individuare i dati che soddisfano la condizione della clausola WHERE. I valori negli attributi EstimateRows e EstimatedTotalSubtreeCost della prima query indicizzata sono inferiori, a indicare che la query è stata elaborata molto più rapidamente e con un numero di risorse inferiore rispetto alla query non indicizzata.
USE AdventureWorks2022;
GO
SET STATISTICS 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 STATISTICS XML OFF;
GO