SET SET STATISTICS XML (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 数据库

使 Microsoft SQL Server 执行 Transact-SQL 语句,并以定义完善的 XML 文档格式生成有关语句执行情况的详细信息。

Transact-SQL 语法约定

语法

  
SET STATISTICS XML { ON | OFF }  

备注

的 SETSET STATISTICS XML 设置是在执行或运行时设置,而不是在解析时。

当 SETSET STATISTICS XML 处于 ON(开启)时,SQL Server 执行后会返回每个语句的执行信息。 该选项设置为 ON 后,将返回有关所有后续 Transact-SQL 语句的信息,直到该选项设置为 OFF 为止。 注意,这 SETSET STATISTICS XML 不一定是批次中唯一的语句。

SET SET STATISTICS XML对于应用程序,如 SQLCMD 工具,返回输出为 NVarchar(Max),其中 XML 输出随后被其他工具用于显示和处理查询计划信息。

SET SET STATISTICS XML 返回信息为一组XML文档。 ON语句之后 SETSET STATISTICS XML 的每个语句都通过单一文档反映在输出中。 每个文档都包含该语句的文本,后面是执行步骤的详细信息。 此输出显示了诸如开销、访问索引以及所执行操作的类型、联接顺序、某个物理操作的执行次数、每个物理运算符生成的行数等运行时信息。

包含XML模式SETSET STATISTICS XML的文档在设置时会被复制到安装Microsoft SQL Server的计算机上的本地目录。 它可以在包含 SQL Server 安装文件的驱动器上找到,具体位置如下:

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

显示计划架构也可从此网站中找到。

SET SET STATISTICS PROFILE 并且 SETSET STATISTICS XML 是彼此的对应角色。 前者生成文本输出;后者生成 XML 输出。 在未来版本的 SQL Server 中,新的查询执行计划信息将仅通过SETSET STATISTICS XML语句显示,而非语句本身SETSET STATISTICS PROFILE。

注意

如果在 SQL Server Management Studio 中选择“包含实际执行计划”,该SET选项不会生成 XML Showplan 输出。 在使用此SET选项前,请清除“包含实际执行计划”按钮。

权限

要使用 SETSET STATISTICS XML 和查看输出,用户必须拥有以下权限:

  • 执行 Transact-SQL 语句的相应权限。

  • 对包含 Transact-SQL 语句引用的对象的所有数据库有 SHOWPLAN 权限。

对于不产生 STATISTICS XML 结果集的 Transact-SQL 语句,只需执行 Transact-SQL 语句的适当权限。 对于 Transact-SQL STATISTICS XML 语句产生结果集,必须同时检查 Transact-SQL 语句执行权限和SHOWPLAN权限,否则 Transact-SQL 语句执行将中止,且不生成Showplan信息。

示例

接下来的两个语句使用这些SETSET STATISTICS XML设置来展示 SQL Server 如何分析和优化查询中索引的使用。 第一个查询在索引列上的 WHERE 子句中使用等于 (=) 比较运算符。 第二个查询在 WHERE 子句中使用 LIKE 运算符。 这将强制 SQL Server 使用聚集索引扫描并查找满足 WHERE 子句条件的数据。 EstimateRows 和 EstimatedTotalSubtreeCost 属性内用于第一个基于索引查询的值较小,这表示与非索引查询相比,该查询的处理速度要快得多,且使用的资源较少

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  

另请参阅

SET SHOWPLAN_XML (Transact-SQL)
sqlcmd 实用工具