core.sp_purge_data(Transact-SQL)
적용 대상: SQL Server
보존 정책에 따라 관리 데이터 웨어하우스에서 데이터를 제거합니다. 이 절차는 지정된 인스턴스와 연결된 관리 데이터 웨어하우스에 대해 SQL Server 에이전트 작업에 의해 mdw_purge_data
매일 실행됩니다. 다음 저장 프로시저를 사용하여 관리 데이터 웨어하우스에서 데이터를 요청 시 제거할 수 있습니다.
구문
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 기본값NULL
인 smallint입니다. 지정한 경우 값은 양수여야 합니다. 뷰 NULL
의 valid_through 열에 있는 core.snapshots
값에 따라 제거할 수 있는 행이 결정됩니다.
[ @instance_name = ] 'instance_name'
컬렉션 집합에 대한 인스턴스의 이름입니다. @instance_name sysname이며 기본값은 .입니다NULL
.
instance_name 컴퓨터 이름과 형식<computername>\<instancename>
의 인스턴스 이름으로 구성된 정규화된 인스턴스 이름이어야 합니다. 이 경우 NULL
로컬 서버의 기본 인스턴스가 사용됩니다.
[ @collection_set_uid = ] 'collection_set_uid'
컬렉션 집합의 GUID입니다. @collection_set_uid 기본값NULL
인 uniqueidentifier입니다. 이 경우 NULL
모든 컬렉션 집합의 정규화된 행이 제거됩니다. 이 값을 가져오려면 카탈로그 뷰를 쿼리합니다 syscollector_collection_sets
.
[ @duration = ] duration
제거 작업을 실행해야 하는 최대 시간(분)입니다. @duration 기본값NULL
인 smallint입니다. 지정한 경우 값은 0이거나 양의 정수여야 합니다. 이 경우 NULL
정규화된 모든 행이 제거되거나 작업이 수동으로 중지될 때까지 작업이 실행됩니다.
반환 코드 값
0
(성공) 또는 1
(실패).
설명
이 절차는 보존 기간에 따라 제거할 수 있는 보기의 행 core.snapshots
을 선택합니다. 제거에 적합한 모든 행이 테이블에서 삭제 core.snapshots_internal
됩니다. 이전 행을 삭제하면 모든 관리 데이터 웨어하우스 테이블에서 연속 삭제 작업이 트리거됩니다. 이 작업은 수집된 데이터를 저장하는 모든 테이블에 대해 정의된 ON DELETE CASCADE 절을 사용하여 수행됩니다.
각 스냅샷과 연결된 데이터는 명시적 트랜잭션 내에서 삭제된 다음 커밋됩니다. 따라서 제거 작업이 수동으로 중지되거나 지정된 @duration 값을 초과하는 경우 커밋되지 않은 데이터만 유지됩니다. 이 데이터는 다음에 작업이 실행될 때 제거할 수 있습니다.
이 프로시저는 관리 데이터 웨어하우스 데이터베이스의 컨텍스트에서 실행해야 합니다.
사용 권한
MDW_ADMIN 멤버 자격(EXECUTE 권한 포함) 고정 데이터베이스 역할이 필요합니다.
예제
A. 매개 변수 없이 sp_purge_data 실행
다음 예제에서는 매개 변수를 core.sp_purge_data
지정하지 않고 실행됩니다. 따라서 기본값 NULL
은 연결된 동작과 함께 모든 매개 변수에 사용됩니다.
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO
B. 보존 및 기간 값 지정
다음 예제에서는 7일보다 오래된 관리 데이터 웨어하우스에서 데이터를 제거합니다. 또한 @duration 매개 변수는 작업이 5분 이상 실행되지 않도록 지정됩니다.
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data @retention_days = 7, @duration = 5;
GO
C. 인스턴스 이름 및 컬렉션 집합 지정
다음 예제에서는 SQL Server의 지정된 인스턴스에 설정된 지정된 컬렉션에 대한 관리 데이터 웨어하우스에서 데이터를 제거합니다. @retention_days 지정되지 않았으므로 뷰의 valid_through
열 core.snapshots
값은 제거에 적합한 컬렉션 집합의 행을 결정하는 데 사용됩니다.
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