SET STATISTICS XML (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Får Microsoft SQL Server att exekvera Transact-SQL satser och generera detaljerad information om hur satserna exekverades i form av ett väldefinierat XML-dokument.

Transact-SQL syntaxkonventioner

Syntax

  
SET STATISTICS XML { ON | OFF }  

Anmärkningar

Inställningen för SET STATISTICS XML är inställd vid exekverings- eller körningstid och inte vid parsetid.

När SET STATISTICS XML är PÅ returnerar SQL Server exekveringsinformation för varje sats efter att den exekverats ut. Efter att detta alternativ är satt PÅ returneras information om alla efterföljande Transact-SQL-satser tills alternativet är AV. Observera att SET STATISTICS XML inte behöver vara det enda uttalandet i en batch.

SET STATISTICS XML returnerar utdata som nvarchar(max) för applikationer, såsom sqlcmd-verktyget , där XML-utdata sedan används av andra verktyg för att visa och bearbeta frågeplaninformationen.

SET STATISTICS XML returnerar information som en uppsättning XML-dokument. Varje sats efter satsen SET STATISTICS XML ON återspeglas i utdatan av ett enda dokument. Varje dokument innehåller texten till uttalandet, följt av detaljerna om exekveringsstegen. Utdata visar körtidsinformation såsom kostnader, åtkomstindex och typer av utförda operationer, join-ordning, antalet gånger en fysisk operation utförs, antalet rader varje fysisk operator producerade och mer.

Dokumentet som innehåller XML-schemat för XML-utdata från SET STATISTICS XML kopieras under installationen till en lokal katalog på datorn där Microsoft SQL Server är installerad. Den finns på enheten som innehåller SQL Server-installationsfilerna, på:

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

Showplan-schemat finns också på denna webbplats.

SET STATISTICS PROFILE och SET STATISTICS XML är motsvarigheter till varandra. Den förstnämnda producerar textuellt utbud; den senare producerar XML-utdata. I framtida versioner av SQL Server kommer ny information om frågeexekveringsplanen endast att visas via SET STATISTICS XML-satsen, inte genom SET STATISTICS PROFILE-satsen.

Anmärkning

Om Include Actual Execution Plan har valts i SQL Server Management Studio, genererar inte det här SET-alternativet XML Showplan-utdata. Avmarkera knappen Inkludera faktisk körningsplan innan du använder det här SET-alternativet.

Permissions

För att använda SET STATISTICS XML och se utdata måste användare ha följande behörigheter:

  • Lämpliga behörigheter för att köra Transact-SQL-satserna.

  • SHOWPLAN-behörighet på alla databaser som innehåller objekt som refereras till av Transact-SQL-satserna.

För Transact-SQL satser som inte producerar STATISTICS XML-resultatuppsättningar krävs endast lämpliga behörigheter för att köra Transact-SQL-satserna. För Transact-SQL satser som faktiskt producerar STATISTICS XML-resultatuppsättningar måste kontroller för både Transact-SQL-satsexekveringsbehörighet och SHOWPLAN-behörighet lyckas, annars avbryts Transact-SQL-satsexekveringen och ingen Showplan-information genereras.

Examples

De två följande satserna använder SET STATISTICS XML-inställningarna för att visa hur SQL Server analyserar och optimerar användningen av index i frågor. Den första frågan använder Equals (=) jämförelseoperatorn i WHERE-klausulen på en indexerad kolumn. Den andra frågan använder LIKE-operatorn i WHERE-satsen. Detta tvingar SQL Server att använda en klustrad indexskanning för att hitta data som uppfyller WHERE-klausulvillkoret. Värdena i attributen EstimateRows och EstimatedTotalSubtreeCost är mindre för den första indexerade frågan, vilket indikerar att den bearbetades mycket snabbare och använde färre resurser än den icke-indexerade frågan.

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  

Se även

SET SHOWPLAN_XML (Transact-SQL)
sqlcmd-verktyg