sp_syscollector_create_collection_set (Transact-SQL)
适用范围:SQL Server
创建新的收集组。 您可以使用此存储过程为数据收集创建一个自定义收集组。
警告
如果配置为代理的 Windows 帐户是尚未登录的非交互式用户或交互式用户,则配置文件目录将不存在,并且暂存目录的创建将失败。 因此,如果在域控制器上使用代理帐户,则必须指定至少使用过一次的交互式帐户,以确保已创建配置文件目录。
语法
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'
收集组的名称。 @name为 sysname,不能为空字符串或 NULL
。
@name 必须是唯一的。 有关当前集合集名称的列表,请查询 syscollector_collection_sets
系统视图。
[ @target = ] N'target'
保留供将来使用。 @target 为 nvarchar(128),默认值为 NULL
.
[ @collection_mode = ] collection_mode
@collection_mode为 smallint,默认值为 0
.
指定收集和存储数据的方式。 @collection_mode 为 smallint,默认值 0
为以下值之一:
0
:缓存模式。 数据收集和上载分别位于各自的计划中。 为连续收集指定缓存模式。1
:非缓存模式。 数据的收集和上载位于同一个计划中。 为临时收集或快照收集指定非缓存模式。
当@collection_mode为时,必须指定@schedule_uid或@schedule_name。0
[ @days_until_expiration = ] days_until_expiration
收集的数据保存在管理数据仓库中的天数。 @days_until_expiration较小,默认值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 = ] N'proxy_name'
代理帐户的名称。 @proxy_name为 sysname,默认值为 NULL
. 如果指定, 则必须@proxy_id NULL
。 若要获取 @proxy_name,请查询 sysproxies
系统表。
[ @schedule_uid = ] 'schedule_uid'
指向计划的 GUID。 @schedule_uid是 uniqueidentifier,默认值为 NULL
. 如果指定,则必须NULL
@schedule_name 。 若要获取 @schedule_uid,请查询 sysschedules
系统表。
如果 @collection_mode 设置为 0
, 则必须指定@schedule_uid 或 @schedule_name 。 将@collection_mode设置为时,如果指定,则忽略@schedule_uid或@schedule_name。1
[ @schedule_name = ] N'schedule_name'
计划的名称。 @schedule_name为 sysname,默认值为 NULL
. 如果指定, 则必须@schedule_uid NULL
。 若要获取 @schedule_name,请查询 sysschedules
系统表。
[ @logging_level = ] logging_level
日志记录级别。 @logging_level 为 smallint,默认值 1
为以下值之一:
0
:跟踪的日志执行信息和 SSIS 事件:- 启动/停止收集组
- 启动/停止包
- 错误信息
1
:级别0
日志记录和:- 执行统计信息
- 连续运行收集的进度
- 来自 SSIS 的警告事件
2
:SSIS 中的级别1
日志记录和详细事件信息。
[ @description = ] N'description'
集合集的说明。 @description为 nvarchar(4000),默认值为 NULL
.
[ @collection_set_id = ] collection_set_id OUTPUT
集合集的唯一本地标识符。 @collection_set_id是 int 类型的 OUTPUT 参数。
[ @collection_set_uid = ] 'collection_set_uid' OUTPUT
收集组的 GUID。 @collection_set_uid是 uniqueidentifier 类型的 OUTPUT 参数。
返回代码值
0
(成功)或 1
(失败)。
注解
sp_syscollector_create_collection_set
必须在系统数据库的上下文 msdb
中运行。
权限
要求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;
GO