sp_syscollector_update_collection_item (Transact-SQL)
用于修改用户定义的收集项的属性,或重命名用户定义的收集项。
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
语法
sp_syscollector_update_collection_item
[ [ @collection_item_id = ] collection_item_id ]
, [ [ @name = ] 'name' ]
, [ [ @new_name = ] 'new_name' ]
, [ [ @frequency = ] frequency ]
, [ [ @parameters = ] 'parameters' ]
参数
[ @collection\_item\_id = ] collection_item_id
标识收集项的唯一标识符。 collection_item_id 的数据类型为 int,默认值为 NULL。 如果 name 为 NULL,则 collection_item_id 必须包含值。[ @name = ] 'name'
收集项的名称。 name 的数据类型为 sysname,默认值为 NULL。 如果 collection_item_id 为 NULL,则 name 必须包含值。[ @new\_name = ] 'new_name'
收集项的新名称。 new_name 的数据类型为 sysname,并且如果使用,则不能为空字符串。new_name 必须是唯一的。 有关当前收集项名称的列表,请查询 syscollector_collection_items 系统视图。
[ @frequency = ] frequency
此收集项收集数据的频率(以秒为单位)。 frequency 的数据类型为 int,默认值为 5,这是可以指定的最小值。[ @parameters = ] 'parameters'
收集项的输入参数。 parameters 的数据类型为 xml,默认值为 NULL。 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
JOIN syscollector_collection_items AS ci
ON ci.collection_set_id = cs.collection_set_id
WHERE collection_item_id = <collection_item_id>;
权限
要求具有 dc_admin 或 dc_operator 固定数据库角色(拥有 EXECUTE 权限)的成员身份才能执行此过程。 尽管 dc_operator 可以运行此存储过程,但该角色的成员只能更改某些属性。 下列属性只能由 dc_admin 更改:
@new\_name
@parameters
示例
以下示例基于 sp_syscollector_create_collection_item (Transact-SQL) 中定义的示例所创建的收集项。
A.更改收集频率
以下示例更改指定收集项的收集频率。
USE msdb;
GO
EXEC sp_syscollector_update_collection_item
@name = N'My custom TSQL query collector item',
@frequency = 3000;
GO
B.重命名收集项
以下示例重命名收集项。
USE msdb;
GO
EXEC sp_syscollector_update_collection_item
@name = N'My custom TSQL query collector item',
@new_name = N'My modified TSQL item';
GO
C.更改收集项的参数
以下示例更改与收集项关联的参数。 已更改 <Value> 属性中定义的语句,并将 UseSystemDatabases 属性设置为 False。 若要查看该项目的当前参数,请在 syscollector_collection_items 系统视图中查询 parameters 列。 您可能需要修改 @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
请参阅
参考
sp_syscollector_create_collection_item (Transact-SQL)
syscollector_collection_items (Transact-SQL)