sys.sp_xtp_control_query_exec_stats (Transact-SQL)

对实例的所有本机编译存储过程或特定的本机编译存储过程启用按查询的统计信息收集。

启用统计信息收集时性能下降。 如果只需要对一个或几个本机编译存储过程进行故障排除,则可仅对这些本机编译存储过程启用统计信息收集。

若要对所有本机编译存储过程启用过程级统计信息收集,请参阅 sys.sp_xtp_control_proc_exec_stats (Transact-SQL)

适用范围:SQL Server(SQL Server 2014 到当前版本)。

语法

sp_xtp_control_query_exec_stats [ [ @new_collection_value = ] collection_value ],[ [ @database_id = ] database_id [ , [ @xtp_object_id = ] procedure_id ] , [ @old_collection_value] ]

参数

  • @new\_collection\_value = value
    决定打开 (1) 还是关闭 (0) 过程级统计信息收集。

    @new\_collection\_value 在 SQL Server 启动时设置为零。

  • @database\_id = = database_id, @xtp\_object\_id = procedure_id
    本机编译存储过程的数据库 ID 和对象 ID。 如果对实例 (sys.sp_xtp_control_proc_exec_stats (Transact-SQL)) 启用统计信息收集,则收集某个本机编译存储过程的统计信息。 对实例关闭统计信息收集不会关闭对个别本机编译存储过程的统计信息收集。

    使用 sys.databases (Transact-SQL)sys.procedures (Transact-SQL)DB_ID (Transact-SQL)OBJECT_ID (Transact-SQL) 获取数据库和存储过程的 ID。

  • @old\_collection\_value = value
    返回当前状态。

返回代码

0 表示成功。 非零表示失败。

权限

要求用户为固定 sysadmin 角色的成员。

代码示例

以下代码示例展示如何对实例的所有本机编译存储过程启用统计信息收集,然后对特定的本机编译存储过程启用统计信息收集。

declare @c bit

exec [sys].[sp_xtp_control_query_exec_stats] @new_collection_value = 1

exec sp_xtp_control_query_exec_stats @old_collection_value=@c output
select @c as 'collection status'

exec [sys].[sp_xtp_control_query_exec_stats] @new_collection_value = 1, @database_id = 5, @xtp_object_id = 341576255

exec sp_xtp_control_query_exec_stats @database_id = 5, @xtp_object_id = 341576255, @old_collection_value=@c output
select @c as 'collection status'

请参阅

参考

系统存储过程 (Transact-SQL)

概念

内存中 OLTP(内存中优化)