core.sp_purge_data(Transact-SQL)

적용 대상:SQL Server

보존 정책에 따라 관리 데이터 웨어하우스에서 데이터를 제거합니다. 이 절차는 지정된 인스턴스와 연결된 관리 데이터 웨어하우스에 대해 mdw_purge_data SQL Server 에이전트 작업에 의해 매일 실행됩니다. 다음 저장 프로시저를 사용하여 관리 데이터 웨어하우스에서 데이터를 요청 시 제거할 수 있습니다.

Transact-SQL 구문 표기 규칙

구문

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 컴퓨터 이름 인스턴스 이름 형식\의 컴퓨터 이름과 인스턴스 이름으로 구성된 정규화된 인스턴스 이름이어야 합니다. NULL이면 로컬 서버의 기본 인스턴스가 사용됩니다.

[ @collection_set_uid = ] 'collection_set_uid'

컬렉션 집합의 GUID입니다. @collection_set_uid 기본값NULLuniqueidentifier입니다. NULL이면 모든 컬렉션 집합의 정규화된 행이 제거됩니다. 이 값을 가져오려면 카탈로그 뷰를 쿼리합니다 syscollector_collection_sets .

[ @duration = ] duration

제거 작업을 실행해야 하는 최대 시간(분)입니다. @duration 기본값NULLsmallint입니다. 지정한 경우 값은 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