Créer un jeu de collections personnalisé - Type de collecteur de requêtes T-SQL générique

S’applique à :SQL Server

Vous pouvez créer un jeu d'éléments de collecte personnalisé avec des éléments de collecte qui utilisent le type de collecteur Requête T-SQL générique à l'aide des procédures stockées fournies avec le collecteur de données. Pour accomplir cette tâche, vous devez utiliser Éditeur de requête dans SQL Server Management Studio pour effectuer les procédures suivantes :

  • Configurer les planifications de chargement
  • Définir et créer le jeu d'éléments de collecte
  • Définir et créer un élément de collecte
  • Vérifiez que l’ensemble de collections et les éléments de collection existent

Avant de créer un jeu d'éléments de collecte personnalisé, vous devez configurer des paramètres de collecte de données. Pour plus d’informations, consultez Configurer les paramètres de collecte de données (Transact-SQL).

Définir et créer le jeu d'éléments de collecte

  1. Définissez un nouveau jeu de collections à l’aide de la sp_syscollector_create_collection_set procédure stockée.

    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;
    

    Le mode collection peut être défini sur 0 (mis en cache) ou 1 sur (non mis en cache).

    Le niveau de journalisation peut être défini sur 0, 1ou 2.

    Les planifications préconfigurées suivantes sont fournies avec le collecteur de données :

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

    Si vous ne souhaitez pas utiliser l’une des planifications fournies, vous pouvez créer une planification et l’utiliser pour l’ensemble de regroupements. Pour plus d’informations, consultez Créer des planifications et les attacher à des travaux.

Définir et créer un élément de collecte

  1. Le nouvel élément de collecte étant basé sur un type de collecteur générique déjà installé, vous pouvez exécuter le code suivant pour définir le GUID de sorte qu'il corresponde au type de collecteur Requête T-SQL générique.

    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. Utilisez la sp_syscollector_create_collection_item procédure stockée pour créer l’élément de collection. Déclarez le schéma de l'élément de collecte de manière à ce qu'il soit mappé au schéma requis pour le type de collecteur Requête T-SQL générique.

    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;
    

Vérifier que le nouveau jeu d'éléments de collecte et l'élément de collecte existent

  1. Avant de démarrer le nouveau jeu de collections, exécutez la requête suivante pour vérifier que le nouvel ensemble de collections et son élément de collection sont créés.

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

    Vous pouvez également effectuer un case activée visuel dans SQL Server Management Studio. Dans l’Explorateur d’objets, développez le nœud Gestion , puis développez Collecte de données. Le nouvel ensemble de collections s’affiche. Le cercle rouge sur l'icône du jeu d'éléments de collecte indique que ce dernier est arrêté.

Exemples

L'exemple de code suivant combine les exemples documentés dans les étapes précédentes. La fréquence de collecte définie pour l’élément de collection (5 secondes) est ignorée, car le mode collection set est défini sur 0, qui est en mode mis en cache. Pour plus d’informations, consultez Collecte de données.

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