カスタム コレクション セットの作成 - ジェネリック T-SQL Query コレクター型

適用対象:SQL Server

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

    コレクション モードは、0 (キャッシュ) または 1 (非キャッシュ) に設定できます。

    ログ記録レベルは、01、または 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;
    
  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;
    

新しいコレクション セットとコレクション アイテムが存在することを確認する

  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