sp_syscollector_create_collection_item (Transact-SQL)

适用范围:SQL Server

在用户定义的收集组中创建一个收集项。 收集项定义要收集的数据以及数据收集所依据的频率。

Transact-SQL 语法约定

语法

sp_syscollector_create_collection_item
    [ @collection_set_id = ] collection_set_id
    , [ @collector_type_uid = ] 'collector_type_uid'
    , [ @name = ] N'name'
    [ , [ @frequency = ] frequency ]
    [ , [ @parameters = ] N'parameters' ]
    , [ @collection_item_id = ] collection_item_id OUTPUT
[ ; ]

参数

[ @collection_set_id = ] collection_set_id

集合集的唯一本地标识符。 @collection_set_id为 int,无默认值。

[ @collector_type_uid = ] 'collector_type_uid'

标识要用于此项的收集器类型的 GUID。 @collector_type_uid是 uniqueidentifier,没有默认值。 有关收集器类型的列表,请查询 syscollector_collector_types 系统视图。

[ @name = ] N'name'

集合项的名称。 @name为 sysname,不能为空字符串或 NULL

@name 必须是唯一的。 有关当前集合项名称的列表,请查询 syscollector_collection_items 系统视图。

[ @frequency = ] frequency

用于指定此收集项收集数据的频率(以秒为单位)。 @frequency为 int,默认值为 5. 可指定的最小值为 5 秒。

如果收集集设置为非缓存模式,则忽略频率,因为此模式会导致数据收集和上传按为收集集指定的计划进行。 若要查看收集集的收集模式,请查询 syscollector_collection_sets 系统视图。

[ @parameters = ] N'parameters'

收集器类型的输入参数。 @parametersxml,默认值为 NULL. @parameters架构必须与收集器类型的参数架构匹配。

[ @collection_item_id = ] collection_item_id OUTPUT

标识集合集项的唯一标识符。 @collection_item_id是 int 类型的 OUTPUT 参数。

返回代码值

0(成功)或 1(失败)。

注解

sp_syscollector_create_collection_item 必须在系统数据库的上下文 msdb 中运行。

必须先停止要向其添加收集项的收集组,然后才能创建收集项。 无法将集合项添加到系统集合集。

权限

要求dc_admin(具有 EXECUTE 权限)固定数据库角色的成员身份才能执行此过程。

示例

下面的示例根据收集类型Generic T-SQL Query Collector Type创建一个收集项,并将该项添加到名为 Simple collection set test 2 的收集组。 若要创建指定的集合集,请在 sp_syscollector_create_collection_set运行示例 B。

USE msdb;
GO

DECLARE @collection_item_id INT;
DECLARE @collection_set_id INT = (
        SELECT collection_set_id
        FROM syscollector_collection_sets
        WHERE name = N'Simple collection set test 2');
DECLARE @collector_type_uid UNIQUEIDENTIFIER = (
        SELECT collector_type_uid
        FROM syscollector_collector_types
        WHERE name = N'Generic T-SQL Query Collector Type');
DECLARE @params XML = CONVERT(XML, N'\<ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
            <Query>
                <Value>SELECT * FROM sys.objects</Value>
                <OutputTable>MyOutputTable</OutputTable>
            </Query>
            <Databases>
                <Database> UseSystemDatabases = "true"
                           UseUserDatabases = "true"
                </Database>
            </Databases>
         \</ns:TSQLQueryCollector>');

EXEC sp_syscollector_create_collection_item @collection_set_id = @collection_set_id,
    @collector_type_uid = @collector_type_uid,
    @name = 'My custom T-SQL query collector item',
    @frequency = 6000,
    @parameters = @params,
    @collection_item_id = @collection_item_id OUTPUT;