创建自定义收集组 - 一般 T-SQL 查询收集器类型
适用于:SQL Server
可以使用与数据收集器一起提供的存储过程创建包含使用一般 T-SQL 查询收集器类型的收集项的自定义收集组。 要完成此任务,需使用 SQL Server Management Studio 中的查询编辑器执行以下过程:
- 配置上载计划
- 定义和创建收集组
- 定义和创建收集项
- 验证该收集组和收集项是否存在
在创建自定义收集组之前,必须配置数据收集参数。 有关详细信息,请参阅 配置数据收集参数 (Transact-SQL)。
定义和创建收集组
使用
sp_syscollector_create_collection_set
存储过程定义一个新的收集组。USE msdb; GO DECLARE @collection_set_id INT; DECLARE @collection_set_uid UNIQUEIDENTIFIER; EXEC sp_syscollector_create_collection_set @name = N'DMV Test 1', @collection_mode = 0, @description = N'This is a test collection set', @logging_level = 1, @days_until_expiration = 14, @schedule_name = N'CollectorSchedule_Every_15min', @collection_set_id = @collection_set_id OUTPUT, @collection_set_uid = @collection_set_uid OUTPUT; SELECT @collection_set_id, @collection_set_uid;
收集模式可以设置为
0
(缓存)或1
(非缓存)。日志记录级别可以设置为
0
、1
或2
。以下预配置计划随数据收集器一起提供:
- CollectorSchedule_Every_5min
- CollectorSchedule_Every_10min
- CollectorSchedule_Every_15min
- CollectorSchedule_Every_30min
- CollectorSchedule_Every_60min
- CollectorSchedule_Every_6h
如果不想使用提供的这些计划,您可以创建一个新计划,然后将其用于收集组。 有关详细信息,请参阅 创建计划并将计划附加到作业。
定义和创建收集项
由于新的收集项基于已经安装的一般收集器类型,因此可以运行以下代码来设置 GUID,使其与一般 T-SQL 查询收集器类型相对应。
DECLARE @collector_type_uid UNIQUEIDENTIFIER; SELECT @collector_type_uid = collector_type_uid FROM [msdb].[dbo].[syscollector_collector_types] WHERE name = N'Generic T-SQL Query Collector Type'; DECLARE @collection_item_id INT;
使用
sp_syscollector_create_collection_item
存储过程创建收集项。 声明收集项的架构,这样它将映射到一般 T-SQL 查询收集器类型所需的架构。EXEC sp_syscollector_create_collection_item @name = N'Query Stats - Test 1', @parameters = N' <ns:TSQLQueryCollector xmlns:ns="DataCollectorType"> <Query> <Value>SELECT * FROM sys.dm_exec_query_stats</Value> <OutputTable>dm_exec_query_stats</OutputTable> </Query> </ns:TSQLQueryCollector>', @collection_item_id = @collection_item_id OUTPUT, @frequency = 5, @collection_set_id = @collection_set_id, @collector_type_uid = @collector_type_uid; SELECT @collection_item_id;
验证新的收集组和收集项是否存在
在启动新的收集组之前,运行以下查询以验证新的收集组及其收集项是否已创建。
USE msdb; GO SELECT * FROM syscollector_collection_sets; SELECT * FROM syscollector_collection_items; GO
还可以在 SQL Server Management Studio 中执行目视检查。 在对象资源管理器中,展开 “管理” 节点,然后展开 “数据收集”。 将显示新的收集组。 收集组的红色圆圈图标指示该收集组已停止。
示例
下面的代码示例汇集了上面步骤中记录的示例。 为收集项设置的收集频率(5 秒钟)将被忽略,因为收集组的收集模式设置为 0,即缓存模式。 有关详细信息,请参阅数据收集。
USE msdb;
GO
DECLARE @collection_set_id INT;
DECLARE @collection_set_uid UNIQUEIDENTIFIER;
EXEC dbo.sp_syscollector_create_collection_set @name = N'DMV Stats Test 1',
@collection_mode = 0,
@description = N'This is a test collection set',
@logging_level = 1,
@days_until_expiration = 14,
@schedule_name = N'CollectorSchedule_Every_15min',
@collection_set_id = @collection_set_id OUTPUT,
@collection_set_uid = @collection_set_uid OUTPUT;
SELECT @collection_set_id, @collection_set_uid;
DECLARE @collector_type_uid UNIQUEIDENTIFIER;
SELECT @collector_type_uid = collector_type_uid
FROM syscollector_collector_types
WHERE name = N'Generic T-SQL Query Collector Type';
DECLARE @collection_item_id INT;
EXEC sp_syscollector_create_collection_item @name = N'Query Stats - Test 1',
@parameters = N'
<ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
<Query>
<Value>select * from sys.dm_exec_query_stats</Value>
<OutputTable>dm_exec_query_stats</OutputTable>
</Query>
</ns:TSQLQueryCollector>',
@collection_item_id = @collection_item_id OUTPUT,
@frequency = 5, -- This parameter is ignored in cached mode
@collection_set_id = @collection_set_id,
@collector_type_uid = @collector_type_uid;
SELECT @collection_item_id;
GO
相关内容
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈