sys.sp_xtp_control_query_exec_stats (Transact-SQL)

适用范围:SQL Server

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

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

若要在所有本机编译的存储过程的过程级别启用统计信息收集,请参阅 sys.sp_xtp_control_proc_exec_stats

语法

sys.sp_xtp_control_query_exec_stats
    [ [ @new_collection_value = ] collection_value ]
    [ , [ @database_id = ] database_id ]
    [ , [ @xtp_object_id = ] procedure_id ]
    , [ @old_collection_value = ] old_collection_value OUTPUT
[ ; ]

参数

[ @new_collection_value = ] collection_value

确定过程级统计信息收集是打开 (1) 还是关闭 (0)。 @new_collection_value

@NEW_COLLECTION_VALUE设置为 0 SQL Server 启动时。

[ @database_id = ] database_id, [ @xtp_object_id = ] procedure_id

本机编译存储过程的数据库 ID 和对象 ID (数据类型 int)。 如果为实例启用了统计信息收集(sys.sp_xtp_control_proc_exec_stats),则会收集本机编译存储过程的统计信息。 关闭实例上的统计信息收集不会关闭单个本机编译存储过程的统计信息收集。

使用 sys.databasessys.proceduresDB_IDOBJECT_ID 获取数据库和存储过程的 ID。

[ @old_collection_value = ] old_collection_value OUTPUT

返回当前状态。 @old_collection_value

返回代码值

0 成功。 非零表示失败。

权限

要求具有固定 sysadmin 角色的成员身份。

示例

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

DECLARE @c BIT;

EXEC sys.sp_xtp_control_query_exec_stats @new_collection_value = 1;

EXEC sys.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 = 41576255;

EXEC sys.sp_xtp_control_query_exec_stats @database_id = 5,
    @xtp_object_id = 41576255,
    @old_collection_value = @c OUTPUT;

SELECT @c AS 'collection status';