사용자 지정 컬렉션 집합 만들기 - 제네릭 T-SQL 쿼리 수집기 유형

적용 대상:SQL Server

데이터 수집기에서 제공하는 저장 프로시저를 사용하여 제네릭 T-SQL 쿼리 수집기 형식을 사용하는 컬렉션 항목으로 사용자 지정 컬렉션 집합을 만들 수 있습니다. 이 작업을 수행하려면 SQL Server Management Studio에서 쿼리 편집기 사용하여 다음 절차를 수행합니다.

  • 업로드 일정 구성
  • 컬렉션 집합 정의 및 만들기
  • 컬렉션 항목 정의 및 만들기
  • 컬렉션 집합 및 컬렉션 항목이 있는지 확인합니다.

사용자 지정 컬렉션 집합을 만들기 전에 데이터 컬렉션 매개 변수를 구성해야 합니다. 자세한 내용은 데이터 수집 매개 변수 구성(Transact-SQL)을 참조하세요.

컬렉션 집합 정의 및 만들기

  1. 저장 프로시저를 사용하여 새 컬렉션 집합을 sp_syscollector_create_collection_set 정의합니다.

    USE msdb;
    GO
    
    DECLARE @collection_set_id INT;
    DECLARE @collection_set_uid UNIQUEIDENTIFIER;
    
    EXEC sp_syscollector_create_collection_set @name = N'DMV Test 1',
        @collection_mode = 0,
        @description = N'This is a test collection set',
        @logging_level = 1,
        @days_until_expiration = 14,
        @schedule_name = N'CollectorSchedule_Every_15min',
        @collection_set_id = @collection_set_id OUTPUT,
        @collection_set_uid = @collection_set_uid OUTPUT;
    
    SELECT @collection_set_id, @collection_set_uid;
    

    컬렉션 모드는 (캐시됨) 또는 (캐시되지 않은) 모드로 1 설정할 0 수 있습니다.

    로깅 수준을 또는 12로깅으로 0설정할 수 있습니다.

    데이터 수집기에서 미리 구성된 일정은 다음과 같습니다.

    • CollectorSchedule_Every_5min
    • CollectorSchedule_Every_10min
    • CollectorSchedule_Every_15min
    • CollectorSchedule_Every_30min
    • CollectorSchedule_Every_60min
    • CollectorSchedule_Every_6h

    제공된 일정 중 하나를 사용하지 않으려면 새 일정을 만들고 컬렉션 집합에 사용할 수 있습니다. 자세한 내용은 일정을 만들고 작업에 연결을 참조하세요.

컬렉션 항목 정의 및 만들기

  1. 새 컬렉션 항목은 이미 설치된 제네릭 수집기 형식을 기반으로 하므로 다음 코드를 실행하여 GUID를 제네릭 T-SQL 쿼리 수집기 유형에 맞게 설정할 수 있습니다.

    DECLARE @collector_type_uid UNIQUEIDENTIFIER;
    
    SELECT @collector_type_uid = collector_type_uid
    FROM [msdb].[dbo].[syscollector_collector_types]
    WHERE name = N'Generic T-SQL Query Collector Type';
    
    DECLARE @collection_item_id INT;
    
  2. sp_syscollector_create_collection_item 저장 프로시저를 사용하여 컬렉션 항목을 만듭니다. 제네릭 T-SQL 쿼리 수집기 형식에 필요한 스키마에 매핑되도록 컬렉션 항목에 대한 스키마를 선언합니다.

    EXEC sp_syscollector_create_collection_item @name = N'Query Stats - Test 1',
        @parameters = N'
            <ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
            <Query>
            <Value>SELECT * FROM sys.dm_exec_query_stats</Value>
            <OutputTable>dm_exec_query_stats</OutputTable>
            </Query>
            </ns:TSQLQueryCollector>',
        @collection_item_id = @collection_item_id OUTPUT,
        @frequency = 5,
        @collection_set_id = @collection_set_id,
        @collector_type_uid = @collector_type_uid;
    
    SELECT @collection_item_id;
    

새 컬렉션 집합 및 컬렉션 항목이 있는지 확인합니다.

  1. 새 컬렉션 집합을 시작하기 전에 다음 쿼리를 실행하여 새 컬렉션 집합과 해당 컬렉션 항목이 생성되었는지 확인합니다.

    USE msdb;
    GO
    
    SELECT * FROM syscollector_collection_sets;
    SELECT * FROM syscollector_collection_items;
    GO
    

    SQL Server Management Studio에서 시각적 검사 수행할 수도 있습니다. 개체 탐색기 관리 노드를 확장한 다음 데이터 수집을 확장합니다. 새 컬렉션 집합이 표시됩니다. 컬렉션 집합의 아이콘에 있는 빨간색 원은 컬렉션 집합이 중지되었음을 나타냅니다.

예제

다음 코드 샘플은 이전 단계에서 설명한 예제를 결합합니다. 컬렉션 집합 컬렉션 모드가 캐시된 모드인 0으로 설정되므로 컬렉션 항목에 대해 설정된 컬렉션 빈도(5초)는 무시됩니다. 자세한 내용은 데이터 수집을 참조하세요.

USE msdb;
GO

DECLARE @collection_set_id INT;
DECLARE @collection_set_uid UNIQUEIDENTIFIER;

EXEC dbo.sp_syscollector_create_collection_set @name = N'DMV Stats Test 1',
    @collection_mode = 0,
    @description = N'This is a test collection set',
    @logging_level = 1,
    @days_until_expiration = 14,
    @schedule_name = N'CollectorSchedule_Every_15min',
    @collection_set_id = @collection_set_id OUTPUT,
    @collection_set_uid = @collection_set_uid OUTPUT;

SELECT @collection_set_id, @collection_set_uid;

DECLARE @collector_type_uid UNIQUEIDENTIFIER;

SELECT @collector_type_uid = collector_type_uid
FROM syscollector_collector_types
WHERE name = N'Generic T-SQL Query Collector Type';

DECLARE @collection_item_id INT;

EXEC sp_syscollector_create_collection_item @name = N'Query Stats - Test 1',
    @parameters = N'
    <ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
    <Query>
      <Value>select * from sys.dm_exec_query_stats</Value>
      <OutputTable>dm_exec_query_stats</OutputTable>
    </Query>
    </ns:TSQLQueryCollector>',
    @collection_item_id = @collection_item_id OUTPUT,
    @frequency = 5, -- This parameter is ignored in cached mode
    @collection_set_id = @collection_set_id,
    @collector_type_uid = @collector_type_uid;

SELECT @collection_item_id;
GO