방법: 일반 T-SQL 쿼리 수집기 유형을 사용하는 사용자 지정 컬렉션 집합 만들기
데이터 수집기와 함께 제공된 저장 프로시저를 사용하여 일반 T-SQL 쿼리 수집기 유형을 사용하는 컬렉션 항목을 포함하는 사용자 지정 컬렉션 집합을 만들 수 있습니다. 이 태스크를 수행하려면 SQL Server Management Studio의 쿼리 편집기를 사용하여 다음 절차를 수행해야 합니다.
업로드 일정 구성
컬렉션 집합 정의 및 만들기
컬렉션 항목 정의 및 만들기
컬렉션 집합 및 컬렉션 항목의 존재 여부 확인
[!참고]
사용자 지정 컬렉션 집합을 만들기 전에 데이터 컬렉션 매개 변수를 구성해야 합니다. 자세한 내용은 방법: 데이터 컬렉션 매개 변수 구성을 참조하십시오.
컬렉션 집합 정의 및 만들기
sp_syscollector_create_collection_set 저장 프로시저를 사용하여 새 컬렉션 집합을 정의합니다.
USE msdb 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
컬렉션 모드는 0(캐시됨) 또는 1(캐시 안 됨)로 설정할 수 있습니다.
로깅 수준은 0, 1 또는 2로 설정할 수 있습니다. 로깅 수준에 대한 자세한 내용은 데이터 수집기 로깅을 참조하십시오.
데이터 수집기와 함께 제공되는 미리 구성된 일정은 다음과 같습니다.
CollectorSchedule_Every_5min
CollectorSchedule_Every_10min
CollectorSchedule_Every_15min
CollectorSchedule_Every_30min
CollectorSchedule_Every_60min
CollectorSchedule_Every_6h
제공되는 일정 중 하나를 사용하지 않으려는 경우 새 일정을 만들어 컬렉션 집합에 대해 사용할 수 있습니다. 자세한 내용은 일정을 만들고 작업에 연결를 참조하십시오.
컬렉션 항목 정의 및 만들기
새 컬렉션 항목은 이미 설치된 일반 수집기 유형을 기반으로 하므로 다음 코드를 실행하여 일반 T-SQL 쿼리 수집기 유형에 해당하는 GUID를 설정할 수 있습니다.
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
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
새 컬렉션 집합 및 컬렉션 항목의 존재 여부 확인
새 컬렉션 집합을 시작하기 전에 다음 쿼리를 실행하여 새 컬렉션 집합 및 해당 컬렉션 항목이 생성되었는지 여부를 확인합니다.
USE msdb SELECT * FROM syscollector_collection_sets SELECT * FROM syscollector_collection_items GO
SQL Server Management Studio에서 직접 확인할 수도 있습니다. 개체 탐색기에서 관리 노드를 확장한 다음 데이터 컬렉션을 확장합니다. 새 컬렉션 집합이 표시됩니다. 컬렉션 집합의 아이콘에 있는 빨간색 원은 컬렉션 집합이 중지되었음을 나타냅니다.
예
다음 코드 예는 앞의 단계에 나와 있는 예제를 조합합니다. 컬렉션 집합 컬렉션 모드가 캐시됨 모드인 0으로 설정되어 있으므로 컬렉션 항목에 대해 설정된 컬렉션 빈도(5초)가 무시됩니다. 자세한 내용은 데이터 컬렉션 용어를 참조하십시오.
USE msdb;
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