sp_syscollector_create_collection_set (Transact-SQL)

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

注意事项注意

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

主题链接图标 Transact-SQL 语法约定

语法

sp_syscollector_create_collection_set 
      [ @name = ] 'name'
    , [ [ @target = ] 'target' ]
    , [ [ @collection_mode = ] collection_mode ]
    , [ [ @days_until_expiration = ] days_until_expiration ]
    , [ [ @proxy_id = ] proxy_id ]
    , [ [ @proxy_name = ] 'proxy_name' ]
    , [ [ @schedule_uid = ] 'schedule_uid' ]
    , [ [ @schedule_name = ] 'schedule_name' ]
    , [ [ @logging_level = ] logging_level ]
    , [ [ @description = ] 'description' ]
    , [ @collection_set_id = ] collection_set_id OUTPUT 
    , [ [ @collection_set_uid = ] 'collection_set_uid' OUTPUT ]

参数

  • [ @name = ] 'name'
    收集组的名称。 name 的数据类型为 sysname,并且不能为空字符串或 NULL。

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

  • [ @target = ] 'target'
    保留以供将来使用。 name 的数据类型为 nvarchar(128),默认值为 NULL。

  • [ @collection\_mode = ] collection_mode
    指定收集和存储数据的方式。 collection_mode 的数据类型为 smallint,可以具有以下值之一:

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

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

    collection_mode 的默认值为 0。 当 collection_mode 为 0 时,必须指定 schedule_uid 或 schedule_name。

  • [ @days\_until\_expiration = ] days_until_expiration
    收集的数据保存在管理数据仓库中的天数。 days_until_expiration 的数据类型为 smallint,其默认值为 730(两年)。 days_until_expiration 必须为 0 或正整数。

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

  • [ @proxy\_name = ] 'proxy_name'
    代理帐户的名称。 proxy_name 的数据类型为 sysname,默认值为 NULL。 如果指定,则 proxy_id 必须为 NULL。 要获取 proxy_name,请查询 sysproxies 系统表。

  • [ @schedule\_uid = ] 'schedule_uid'
    指向计划的 GUID。 schedule_uid 的数据类型为 uniqueidentifier,默认值为 NULL。 如果指定,则 schedule_name 必须为 NULL。 要获取 schedule_uid,请查询 sysschedules 系统表。

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

  • [ @schedule\_name = ] 'schedule_name'
    计划的名称。 schedule_name 的数据类型为 sysname 并且默认值为 NULL。 如果指定,则 schedule_uid 必须为 NULL。 要获取 schedule_name,请查询 sysschedules 系统表。

  • [ @logging\_level = ] logging_level
    表示日志记录级别。 logging_level 的数据类型为 smallint,可以是以下值之一:

    0 - 记录执行信息和跟踪以下内容的 SSIS 事件:

    • 启动/停止收集组

    • 启动/停止包

    • 错误信息

    1 - 级别 0 日志记录和:

    • 执行统计信息

    • 连续运行收集的进度

    • 来自 SSIS 的警告事件

    2 - 级别 1 日志记录和来自 SSIS 的详细事件信息

    logging_level 的默认值为 1。

  • [ @description = ] 'description'
    收集组的说明。 description 的数据类型为 nvarchar(4000) 并且默认值为 NULL。

  • [ @collection\_set\_id = ] collection_set_id
    收集组的唯一本地标识符。 collection_set_id 是具有 OUTPUT 的 int 数据类型,并且是必需的。

  • [ @collection\_set\_uid = ] 'collection_set_uid'
    收集组的 GUID。 collection_set_uid 是具有 OUTPUT 的 uniqueidentifier 数据类型,默认值为 NULL。

返回代码值

0(成功)或 1(失败)

注释

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

权限

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

示例

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;

请参阅

任务

创建使用一般 T-SQL 查询收集器类型的自定义收集组 (Transact-SQL)

参考

数据收集器存储过程 (Transact-SQL)

syscollector_collection_sets (Transact-SQL)

概念

数据收集