Bonjour,

Sous SQL2008, Windows server 2008, je cherche à déclencher une alerte sur base de compteurs WMI et stocker la valeur récupérée (par exemple, PercentProcessTime) dans une table.

Cela est (ou plutôt, devrait être) possible en utilisant un "jeton" au niveau de l'agent.

Service broker a été activé pour MSDB.
Dans les propriétés de l'Agent SQL server, Système d'alerte, j'ai coché "Remplacer les jetons pour toutes les réponses de travaux aux alertes".

J'ai défini une alerte de type DMI avec les paramètres suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Espace de noms : \\.\root\cimv2

Requête :

SELECT * FROM __InstanceModificationEvent WITHIN 30 WHERE TargetInstance ISA "Win32_PerfFormattedData_PerfOS_Processor" AND TargetInstance.name = "_Total"
(testée via wbemtest)
ce qui devrait me ramener la valeur du compteur toutes les 30 secondes.

Cette alerte déclenche un job dans l'agent qui contient la commande suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
INSERT INTO Test (x)
SELECT CAST(N'$(ESCAPE_SQUOTE(WMI(PercentProcessorTime)))' as varchar(3))
J'ai volontairement converti l'UINT64 en varchar pour éviter tout problème mais voici l'erreur qui m'est retournée (avec ou sans conversion):

Impossible de démarrer l'exécution de l'étape 1 (raison : Erreur lors de la récupération de la variable WMI WMI(PercentProcessorTime) : 0x80041002). L''étape a échoué.

Quelqu'un pourait-il m'aiguiller un peu ?

Un grand merci d'avance,

Michel.