sp_syscollector_update_collection_set (Transact-SQL)

适用于SQL Server

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

警告

在配置为代理的 Windows 帐户是非交互用户或者是尚未登录的交互用户时,配置文件目录将不存在,并且临时目录的创建将失败。 因此,如果您正在域控制器上使用代理帐户,则必须指定已使用至少一次的交互帐户,以便确保创建了配置文件目录。

Transact-SQL 语法约定

语法

sp_syscollector_update_collection_set
    [ [ @collection_set_id = ] collection_set_id ]
    [ , [ @name = ] N'name' ]
    [ , [ @new_name = ] N'new_name' ]
    [ , [ @target = ] N'target' ]
    [ , [ @collection_mode = ] collection_mode ]
    [ , [ @days_until_expiration = ] days_until_expiration ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
    [ , [ @schedule_uid = ] 'schedule_uid' ]
    [ , [ @schedule_name = ] N'schedule_name' ]
    [ , [ @logging_level = ] logging_level ]
    [ , [ @description = ] N'description' ]
[ ; ]

参数

[ @collection_set_id = ] collection_set_id

集合集的唯一本地标识符。 @collection_set_id为 int,并且如果@nameNULL则必须具有值。

[ @name = ] N'name'

收集组的名称。 @name为 sysname,如果@collection_set_idNULL则必须具有值。

[ @new_name = ] N'new_name'

集合集的新名称。 @new_namesysname,默认值 NULL为 ;如果使用,则不能为空字符串。 @new_name 必须是唯一的。 有关当前集合集名称的列表,请查询 syscollector_collection_sets 系统视图。

[ @target = ] N'target'

保留供将来使用。 @targetnvarchar(128),默认值为 NULL.

[ @collection_mode = ] collection_mode

要使用的数据收集类型。 @collection_mode为 smallint,可以具有以下值之一:

  • 0:缓存模式。 数据收集和上载分别位于各自的计划中。 为连续收集指定缓存模式。

  • 1:非缓存模式。 数据的收集和上载位于同一个计划中。 为临时收集或快照收集指定非缓存模式。

如果从非缓存模式更改为缓存模式(0),则还必须指定 @schedule_uid@schedule_name

[ @days_until_expiration = ] days_until_expiration

收集的数据保存在管理数据仓库中的天数。 @days_until_expirationsmallint,必须为 0 正整数。

[ @proxy_id = ] proxy_id

SQL Server 代理代理帐户的唯一标识符。 @proxy_id为 int

[ @proxy_name = ] N'proxy_name'

代理服务器的名称。 @proxy_name为 sysname,默认值为 NULL.

[ @schedule_uid = ] 'schedule_uid'

指向计划的 GUID。 @schedule_uid是 uniqueidentifier,默认值为 NULL.

若要获取 @schedule_uid,请查询 sysschedules 系统表。

如果 @collection_mode 设置为 0则必须指定@schedule_uid@schedule_name 。 将@collection_mode设置为时如果指定,则忽略@schedule_uid@schedule_name1

[ @schedule_name = ] N'schedule_name'

计划的名称。 @schedule_name为 sysname,默认值为 NULL. 如果指定, 则必须@schedule_uid NULL。 若要获取 @schedule_name,请查询 sysschedules 系统表。

[ @logging_level = ] logging_level

日志记录级别。 @logging_levelsmallint,默认值 1为以下值之一:

  • 0:跟踪的日志执行信息和 SSIS 事件:

    • 启动/停止收集组
    • 启动/停止包
    • 错误信息
  • 1:级别 0 日志记录和:

    • 执行统计信息
    • 连续运行收集的进度
    • 来自 SSIS 的警告事件
  • 2:SSIS 中的级别 1 日志记录和详细事件信息。

[ @description = ] N'description'

集合集的说明。 @description为 nvarchar(4000),默认值为 NULL.

返回代码值

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

注解

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

collection_set_id名称必须有一个值,两者都NULL不能。 若要获取这些值,请查询 syscollector_collection_sets 系统视图。

如果集合集正在运行,则只能更新 schedule_uid说明。 若要停止收集集,请使用 sp_syscollector_stop_collection_set

权限

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

  • @new_name
  • @target
  • @proxy_id
  • @description
  • @collection_mode
  • @days_until_expiration

示例

A. 重命名集合集

下面的示例重命名用户定义的收集组。

USE msdb;
GO
EXECUTE dbo.sp_syscollector_update_collection_set
@name = N'Simple collection set test 1',
@new_name = N'Collection set test 1 in cached mode';
GO

B. 将收集模式从非缓存更改为缓存

下面的示例将收集模式从非缓存模式更改为缓存模式。 此更改需要您指定计划 ID 或计划名称。

USE msdb;
GO
EXECUTE dbo.sp_syscollector_update_collection_set
@name = N'Collection set test 1 in cached mode',
@collection_mode = 0,
@schedule_uid = 'C7022AF3-51B8-4011-B159-64C47C88FF70';
-- alternatively, use @schedule_name.
-- @schedule_name = N'CollectorSchedule_Every_15min;
GO

°C 更改其他集合集参数

以下示例更新名为 Simple collection set test 2 的集合集的各种属性。

USE msdb;
GO

EXEC dbo.sp_syscollector_update_collection_set
    @name = N'Simple collection set test 2',
    @collection_mode = 1,
    @days_until_expiration = 5,
    @description = N'This is a test collection set that runs in noncached mode.',
    @logging_level = 0;
GO