sp_syscollector_update_collection_item (Transact-SQL)

适用范围:SQL Server

用于修改用户定义的收集项的属性,或重命名用户定义的收集项。

Transact-SQL 语法约定

语法

sp_syscollector_update_collection_item
    [ [ @collection_item_id = ] collection_item_id ]
    [ , [ @name = ] N'name' ]
    [ , [ @new_name = ] N'new_name' ]
    [ , [ @frequency = ] frequency ]
    [ , [ @parameters = ] N'parameters' ]
[ ; ]

参数

[ @collection_item_id = ] collection_item_id

标识集合项的唯一标识符。 @collection_item_id为 int,默认值为 NULL. 如果@name为 NULL,则@collection_item_id必须具有值

[ @name = ] N'name'

集合项的名称。 @name为 sysname,默认值为 NULL. 如果@collection_item_id为 ,则@nameNULL必须具有值

[ @new_name = ] N'new_name'

集合项的新名称。 @new_namesysname,默认值 NULL为 ;如果使用,则不能为空字符串。

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

[ @frequency = ] frequency

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

[ @parameters = ] N'parameters'

收集项的输入参数。 @parametersxml,默认值为空字符串。 @parameters架构必须与收集器类型的参数架构匹配。

返回代码值

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

注解

如果将收集组设置为非缓存模式,则忽略更改频率,这是因为此模式将导致数据收集和上载按为收集组指定的计划执行。 若要查看收集组的状态,请运行下面的查询。 将 <collection_item_id> 替换为要更新的收集项的 ID。

USE msdb;
GO

SELECT cs.collection_set_id,
    collection_set_uid,
    cs.name,
    'is running' = CASE
        WHEN is_running = 0
            THEN 'No'
        ELSE 'Yes'
        END,
    'cache mode' = CASE
        WHEN collection_mode = 0
            THEN 'Cached mode'
        ELSE 'Non-cached mode'
        END
FROM syscollector_collection_sets AS cs
INNER JOIN syscollector_collection_items AS ci
    ON ci.collection_set_id = cs.collection_set_id
WHERE collection_item_id = < collection_item_id >;
GO

权限

要求dc_admin具有 EXECUTE 权限的dc_operator固定数据库角色的成员身份才能执行此过程。 尽管 dc_operator 可以运行此存储过程,但此角色的成员在可以更改的属性中受到限制。 只能通过dc_admin更改以下属性:

  • @new_name
  • @parameters

示例

以下示例基于在 sp_syscollector_create_collection_item 中定义的示例中创建的集合项。

A. 更改收集频率

以下示例更改指定收集项的收集频率。

USE msdb;
GO

EXEC sp_syscollector_update_collection_item
    @name = N'My custom T-SQL query collector item',
    @frequency = 3000;
GO

B. 重命名集合项

以下示例重命名收集项。

USE msdb;
GO

EXEC sp_syscollector_update_collection_item
    @name = N'My custom T-SQL query collector item',
    @new_name = N'My modified T-SQL item';
GO

°C 更改集合项的参数

以下示例更改与收集项关联的参数。 已更改 <Value> 属性中定义的语句,并将 UseSystemDatabases 属性设置为 False。 若要查看此项的当前参数,请查询系统视图中的参数列 syscollector_collection_items 。 可能需要修改@collection_item_id的值

USE msdb;
GO
EXEC sp_syscollector_update_collection_item
@collection_item_id = 9,
@parameters = '
    <ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
        <Query>
            <Value>SELECT * FROM sys.dm_db_index_usage_stats</Value>
            <OutputTable>MyOutputTable</OutputTable>
        </Query>
        <Databases>
            <Database> UseSystemDatabases = "false"
                       UseUserDatabases = "true"</Database>
        </Databases>
    </ns:TSQLQueryCollector>';
GO