次の方法で共有


ジェネリック T-SQL Query コレクタ型を使用するカスタム コレクション セットを作成する方法

データ コレクタで用意されているストアド プロシージャを使用して、ジェネリック T-SQL Query コレクタ型を使用するコレクション アイテムを含むカスタム コレクション セットを作成できます。この作業には、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
    
    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

    用意されているスケジュールのいずれも使用しない場合は、コレクション セットに新しいスケジュールを作成して使用できます。詳細については、「スケジュールの作成とジョブへのアタッチ」を参照してください。

コレクション アイテムを定義して作成する

  1. 新しいコレクション アイテムはインストール済みのジェネリックコレクタ型に基づいているため、次のコードを実行して、ジェネリック T-SQL Query コレクタ型に対応するように 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
    
    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 Query コレクタ型に必要なスキーマにマップされるように、コレクション アイテムのスキーマを宣言します。

    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
    
    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
    
    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

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