sp_syscollector_create_collection_set (Transact-SQL)

适用于:SQL Server

创建新的收集组。 您可以使用此存储过程为数据收集创建一个自定义收集组。

警告

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

Transact-SQL 语法约定

语法

sp_syscollector_create_collection_set
    [ @name = ] N'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 OUTPUT
    [ , [ @collection_set_uid = ] 'collection_set_uid' OUTPUT ]
[ ; ]

参数

[ @name = ] N'name'

收集组的名称。 @namesysname ,不能为空字符串或 NULL

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

[ @target = ] N'target'

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

[ @collection_mode = ] collection_mode

@collection_modesmallint,默认值为 0

指定收集和存储数据的方式。 @collection_modesmallint,默认值为 0,可以具有以下值之一:

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

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

@collection_mode0时,必须指定 @schedule_uid@schedule_name

[ @days_until_expiration = ] days_until_expiration

收集的数据保存在管理数据仓库中的天数。 @days_until_expiration小型的,默认 730 为两年) (。 @days_until_expiration 必须为 0 或正整数。

[ @proxy_id = ] proxy_id

SQL Server 代理代理帐户的唯一标识符。 @proxy_idint,默认值为 NULL。 如果指定, @proxy_name 必须为 NULL。 若要获取 @proxy_id,请 sysproxies 查询系统表。 dc_admin固定数据库角色必须具有访问代理的权限。 有关详细信息,请参阅创建SQL Server 代理代理

[ @proxy_name = ] N'proxy_name'

代理帐户的名称。 @proxy_namesysname,默认值为 NULL。 如果指定, @proxy_id 必须为 NULL。 若要获取 @proxy_name,请 sysproxies 查询系统表。

[ @schedule_uid = ] 'schedule_uid'

指向计划的 GUID。 @schedule_uiduniqueidentifier,默认值为 NULL。 如果指定, @schedule_name 必须为 NULL。 若要获取 @schedule_uid,请 sysschedules 查询系统表。

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

[ @schedule_name = ] N'schedule_name'

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

[ @logging_level = ] logging_level

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

  • 0:记录执行信息和跟踪:

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

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

[ @description = ] N'description'

收集组的说明。 @descriptionnvarchar (4000) ,默认值为 NULL

[ @collection_set_id = ] collection_set_id OUTPUT

收集组的唯一本地标识符。 @collection_set_idint 类型的 OUTPUT 参数。

[ @collection_set_uid = ] 'collection_set_uid' OUTPUT

收集组的 GUID。 @collection_set_uiduniqueidentifier 类型的 OUTPUT 参数。

返回代码值

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

备注

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

权限

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

示例

A. 使用默认值创建收集组

下面的示例通过仅指定所需参数来创建收集组。 @collection_mode 不是必需的,但默认收集模式 (缓存) 需要指定计划 ID 或计划名称。

USE msdb;
GO

DECLARE @collection_set_id INT;

EXECUTE dbo.sp_syscollector_create_collection_set
    @name = N'Simple collection set test 1',
    @description = N'This is a test collection set that runs in non-cached mode.',
    @collection_mode = 1,
    @collection_set_id = @collection_set_id OUTPUT;
GO

B. 使用指定值创建收集组

下面的示例通过指定多个参数的值来创建收集组。

USE msdb;
GO

DECLARE @collection_set_id INT;
DECLARE @collection_set_uid UNIQUEIDENTIFIER;

SET @collection_set_uid = NEWID();

EXEC dbo.sp_syscollector_create_collection_set
    @name = N'Simple collection set test 2',
    @collection_mode = 0,
    @days_until_expiration = 365,
    @description = N'This is a test collection set that runs in cached mode.',
    @logging_level = 2,
    @schedule_name = N'CollectorSchedule_Every_30min',
    @collection_set_id = @collection_set_id OUTPUT,
    @collection_set_uid = @collection_set_uid OUTPUT;
GO

另请参阅