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.databases、 sys.procedures、 DB_ID 或 OBJECT_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';