Procédure : créer un jeu d'éléments de collecte personnalisé qui utilise le type de collecteur Requête T-SQL générique
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. Accomplir cette tâche implique l'utilisation de l'éditeur de requête dans SQL Server Management Studio pour effectuer les procédures suivantes :
Configurer les planifications de téléchargement.
Définir et créer le jeu d'éléments de collecte.
Définir et créer un élément de collecte.
Vérifier que le jeu d'éléments de collecte et les éléments de collecte existent.
[!REMARQUE]
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 Procédure : configurer des paramètres de collecte de données.
Définir et créer le jeu d'éléments de collecte
Définissez un nouveau jeu d'éléments de collecte à l'aide de la procédure stockée 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
Le mode de collecte peut être défini à 0 (avec mise en cache) ou à 1 (sans mise en cache).
Le niveau de journalisation peut être défini sur 0, 1 ou 2. Pour plus d'informations sur les niveaux de journalisation, consultez Journalisation du collecteur de données.
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 en créer une et vous en servir pour le jeu d'éléments de collecte. Pour plus d'informations, consultez Création et attachement de planifications à des travaux.
Définir et créer un élément de collecte
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
Utilisez la procédure stockée sp_syscollector_create_collection_item pour créer l'élément de collecte. 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
Avant de démarrer le nouveau jeu d'éléments de collecte, exécutez la requête suivante pour vérifier que le nouveau jeu d'éléments de collecte et son élément de collecte ont été créés.
USE msdb SELECT * FROM syscollector_collection_sets SELECT * FROM syscollector_collection_items GO
Vous pouvez également procéder à un contrôle 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 nouveau jeu d'éléments de collecte s'affiche. Le cercle rouge sur l'icône du jeu d'éléments de collecte indique que ce dernier est arrêté.
Exemple
L'exemple de code suivant combine les exemples documentés dans les étapes précédentes. Notez que la fréquence de collecte définie pour l'élément de collecte (5 secondes) est ignorée, car le mode de collecte du jeu d'éléments de collecte est défini sur 0, ce qui correspond au mode avec mise en cache. Pour plus d'informations, consultez Terminologie relative à la collecte de données.
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