core.sp_create_snapshot (Transact-SQL)
适用范围:SQL Server
在管理数据仓库 core.snapshots
视图中插入一行。 每当上载包开始向管理数据仓库上载数据时,都会调用此过程。
语法
core.sp_create_snapshot [ @collection_set_uid = ] 'collection_set_uid'
, [ @collector_type_uid = ] 'collector_type_uid'
, [ @machine_name = ] 'machine_name'
, [ @named_instance = ] 'named_instance'
, [ @log_id = ] log_id
, [ @snapshot_id = ] snapshot_id OUTPUT
[ ; ]
参数
[ @collection_set_uid = ] 'collection_set_uid'
收集组的 GUID。 @collection_set_uid 为 uniqueidentifier ,没有默认值。 若要获取 GUID,请查询数据库中的dbo.syscollector_collection_sets视图 msdb
。
[ @collector_type_uid = ] 'collector_type_uid'
收集器类型的 GUID。 @collector_type_uid为 uniqueidentifier,不带默认值。 若要获取 GUID,请查询数据库中的dbo.syscollector_collector_types视图 msdb
。
[ @machine_name = ] 'machine_name'
收集组所在的服务器的名称。 @machine_name为 sysname,没有默认值。
[ @named_instance = ] 'named_instance'
收集组实例的名称。 @named_instance 为 sysname,没有默认值。
[ @log_id = ] log_id
映射到收集数据的服务器上的收集组事件日志的唯一标识符。 @log_id为 bigint,没有默认值。 若要获取log_id的值,请查询数据库中的dbo.syscollector_execution_log视图msdb
。
[ @snapshot_id = ] snapshot_id
插入到视图中的 core.snapshots
行的唯一标识符。 @snapshot_id 为 int ,并作为 OUTPUT 返回。
返回代码值
0
(成功)或 1
(失败)。
注解
每次上传包开始将数据上传到管理数据仓库时,数据收集器运行时组件都会调用 core.sp_create_snapshot
。
此过程进行以下检查:
collection_set_uid与表中的现有条目
core.source_info_internal
匹配。collector_type_uid与视图中的现有条目
core.supported_collector_types
匹配。
如果未通过上述任一检查,该过程将失败并返回一个错误。
权限
要求mdw_writer(具有 EXECUTE 权限)固定数据库角色的成员身份。
示例
下面的示例为“磁盘使用情况”收集组创建一个快照,将该快照添加到管理数据仓库中,并返回快照标识符。 在本示例中,使用默认实例。
USE <management_data_warehouse>;
DECLARE @snapshot_id int;
EXEC core.sp_create_snapshot
@collection_set_uid = '7B191952-8ECF-4E12-AEB2-EF646EF79FEF',
@collector_type_uid = '302E93D1-3424-4BE7-AA8E-84813ECF2419',
@machine_name = '<computername>',
@named_instance = 'MSSQLSERVER',
@log_id = 11, -- ID of the log for the collection set
@snapshot_id = @snapshot_id OUTPUT;