core.sp_purge_data(Transact-SQL)
보존 정책을 기준으로 관리 데이터 웨어하우스에서 데이터를 제거합니다. 이 프로시저는 지정된 인스턴스와 연결된 관리 데이터 웨어하우스에 대해 mdw_purge_data SQL Server 에이전트 작업에서 매일 실행됩니다. 다음 저장 프로시저를 사용하여 관리 데이터 웨어하우스에서 데이터를 요청 시 제거할 수 있습니다.
구문
core.sp_purge_data
[ [ @retention_days = ] retention_days ]
[ , [ @instance_name = ] 'instance_name' ]
[ , [ @collection_set_uid = ] 'collection_set_uid' ]
[ , [ @duration = ] duration ]
인수
[@retention_days =] retention_days
데이터를 관리 데이터 웨어하우스 테이블에 보유하는 일수입니다. retention_days보다 오래된 타임스탬프가 있는 데이터는 제거됩니다. retention_days는 smallint이며 기본값은 NULL입니다. 지정된 경우 값은 양수여야 합니다. NULL인 경우 core.snapshots 뷰의 valid_through 열에 있는 값에 따라 제거에 적합한 행이 결정됩니다.[@instance_name = ] 'instance_name'
컬렉션 집합의 인스턴스 이름입니다. instance_name은 sysname이며 기본값은 NULL입니다.instance_name은 computername\instancename 형식의 컴퓨터 이름과 인스턴스 이름으로 구성된 정규화된 인스턴스 이름이어야 합니다. NULL인 경우 로컬 서버의 기본 인스턴스가 사용됩니다.
[@collection_set_uid = ] 'collection_set_uid'
컬렉션 집합의 GUID입니다. collection_set_uid는 uniqueidentifier이며 기본값은 NULL입니다. NULL인 경우 모든 컬렉션 집합에서 한정하는 행이 제거됩니다. 이 값을 확인하려면 syscollector_collection_sets 카탈로그 뷰를 쿼리합니다.[@duration = ] duration
제거 작업을 실행해야 하는 최대 시간(분)입니다. duration은 smallint이며 기본값은 NULL입니다. 지정된 경우 값은 0 또는 양의 정수여야 합니다. NULL인 경우 한정된 모든 행이 제거될 때까지 작업이 실행되거나 작업이 수동으로 중지됩니다.
반환 코드 값
0(성공) 또는 1(실패)
주의
이 프로시저는 보존 기간을 기준으로 제거에 적합한 core.snapshots 뷰에서 행을 선택합니다. 그러면 제거에 적합한 모든 행이 core.snapshots_internal 테이블에서 삭제됩니다. 이전 행을 삭제하면 모든 관리 데이터 웨어하우스 테이블에서 연계 삭제 작업이 트리거됩니다. 이 작업은 수집된 데이터를 저장하는 모든 테이블에 대해 정의된 ON DELETE CASCADE 절을 사용하여 수행됩니다.
각 스냅숏과 관련 데이터는 명시적 트랜잭션 내에서 삭제된 다음 커밋됩니다. 따라서 제거 작업을 수동으로 중지하거나 @duration에 지정된 값이 초과된 경우 커밋되지 않은 데이터만 유지됩니다. 이 데이터는 다음에 작업이 실행될 때 제거될 수 있습니다.
이 프로시저는 관리 데이터 웨어하우스 데이터베이스의 컨텍스트에서 실행해야 합니다.
사용 권한
mdw_admin(EXECUTE 권한 있음) 고정 데이터베이스 역할의 멤버여야 합니다.
예
1. 매개 변수 없이 sp_purge_data 실행
다음 예에서는 매개 변수를 지정하지 않고 core.sp_purge_data를 실행합니다. 따라서 모든 매개 변수에 대해 기본값 NULL이 연결된 동작과 함께 사용됩니다.
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO
2. 보존 및 기간 값 지정
다음 예에서는 관리 데이터 웨어하우스에서 7일보다 오래된 데이터를 제거합니다. 또한 작업이 5분 이상 실행되지 않도록 @duration 매개 변수도 지정합니다.
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data @retention_days = 7, @duration = 5;
GO
3. 인스턴스 이름 및 컬렉션 집합 지정
다음 예에서는 관리 데이터 웨어하우스에서 지정된 SQL Server 인스턴스의 지정된 컬렉션 집합에 대한 데이터를 제거합니다. @retention\_days가 지정되지 않았기 때문에 core.snapshots 뷰의 valid_through 열에 있는 값에 따라 제거에 적합한 컬렉션 집합의 행이 결정됩니다.
USE <management_data_warehouse>;
GO
-- Get the collection set unique identifier for the Disk Usage system collection set.
DECLARE @disk_usage_collection_set_uid uniqueidentifier = (SELECT collection_set_uid
FROM msdb.dbo.syscollector_collection_sets WHERE name = N'Disk Usage');
EXECUTE core.sp_purge_data @instance_name = @@SERVERNAME, @collection_set_uid = @disk_usage_collection_set_uid;
GO