SET STATISTICS XML (Transact-SQL)
使 Microsoft SQL Server 执行 Transact-SQL 语句,并以定义完善的 XML 文档格式生成有关语句执行情况的详细信息。
语法
SET STATISTICS XML { ON | OFF }
注释
SET STATISTICS XML 的设置是在执行或运行时设置的,而不是在分析时设置的。
当 SET STATISTICS XML 为 ON 时,SQL Server 将在执行每条语句后返回该语句的执行信息。该选项设置为 ON 后,将返回有关所有后续 Transact-SQL 语句的信息,直到该选项设置为 OFF 为止。请注意,SET STATISTICS XML 不必是批处理中的唯一语句。
SET STATISTICS XML 将为应用程序(如 sqlcmd 实用工具)返回 nvarchar(max) 类型的输出,其中的 XML 输出随后将由其他工具用于显示和处理查询计划信息。
SET STATISTICS XML 返回的信息是一组 XML 文档。SET STATISTICS XML ON 语句后面的每条语句都反映在输出的单个文档中。每个文档都包含该语句的文本,后面是执行步骤的详细信息。此输出显示了诸如开销、访问索引以及所执行操作的类型、联接顺序、某个物理操作的执行次数、每个物理运算符生成的行数等运行时信息。
在安装过程中,将把包含 XML 架构(该架构用于 SET STATISTICS XML 生成的 XML 输出)的文档复制到安装了 Microsoft SQL Server 的计算机的本地目录中。它可以在包含 SQL Server 安装文件的驱动器上找到,具体位置如下:
\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd
显示计划架构也可从此网站中找到。
SET STATISTICS PROFILE 和 SET STATISTICS XML 彼此互为对等物。前者生成文本输出;后者生成 XML 输出。在 SQL Server 的未来版本中,新的查询执行计划信息将只通过 SET STATISTICS XML 语句显示,而不通过 SET STATISTICS PROFILE 语句显示。
注意 |
---|
如果在 SQL Server Management Studio 中选定了“包括实际的执行计划”,则该 SET 选项不会生成 XML 显示计划输出。请在使用该 SET 选项之前清除“包括实际的执行计划”按钮。 |
权限
若要使用 SET STATISTICS XML 并查看输出,用户必须具有以下权限:
执行 Transact-SQL 语句的相应权限。
对包含 Transact-SQL 语句所引用对象的所有数据库的 SHOWPLAN 权限。
对于不生成 STATISTICS XML 结果集的 Transact-SQL 语句,只需要具有执行 Transact-SQL 语句的相应权限。对于生成 STATISTICS XML 结果集的 Transact-SQL 语句,则要求对 Transact-SQL 语句执行权限和 SHOWPLAN 权限的检查必须成功,否则将中止 Transact-SQL 语句的执行,并且不生成任何 Showplan 信息。
有关详细信息,请参阅 显示计划安全性和SHOWPLAN 权限和 Transact-SQL 批处理。
示例
下面两条语句使用 SET STATISTICS XML 设置,显示 SQL Server 在查询内对索引进行分析和优化的方法。第一个查询在索引列上的 WHERE 子句中使用等于 (=) 比较运算符。第二个查询在 WHERE 子句中使用 LIKE 运算符。这将强制 SQL Server 使用聚集索引扫描并查找满足 WHERE 子句条件的数据。EstimateRows 和 EstimatedTotalSubtreeCost 属性内用于第一个基于索引的查询的值较小,这表示与非索引查询相比,该查询的处理速度要快得多,且使用的资源较少。
USE AdventureWorks2008R2;
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