IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Alertes SQL Serveur, WMI et SQL Serveur Agent


Sujet :

Administration SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Alertes SQL Serveur, WMI et SQL Serveur Agent
    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.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 890
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 890
    Points : 53 122
    Points
    53 122
    Billets dans le blog
    6
    Par défaut
    Certainement un problème de droit au niveau du compte de service de l'agent.

    A +

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Certainement un problème de droit au niveau du compte de service de l'agent.

    A +
    Bonjour Frédéric,

    Merci pour cette piste. Malheureusement, le compte utilisé pour le démarrage du service est administrateur du serveur et sysadmin pour SQL.

    Une autre idée ?

    Merci encore.

    Michel.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour tout le monde,

    Je commence à me sentir un peu seul sur cette planète ... Personne n'a une petite idée ?

    Je continue à chercher de mon côté mais toujours aucun nouvel élément !

    Merci d'avance.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 890
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 890
    Points : 53 122
    Points
    53 122
    Billets dans le blog
    6
    Par défaut
    Tu fait un transtypage vers varchar(3) mais c'est trop faible. UN pourcentage peut être 87,65456455641562621 %

    A +

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Le code erreur "0x80041002" indique un objet non trouvé. Le problème provient du jeton dans l'agent SQL qui ne peut récupérer la valeur du pourcentage pour une raison encore nébuleuse.

    La requête WMI fonctionne sans problème, je l'ai d'ailleurs utilisée en désespoir de cause dans le VBScript ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    /* Connexion SQL */
    Const adOpenStatic = 3
    Const adLockOptimistic = 3
     
    Set objConnection = CreateObject("ADODB.Connection")
    Set objRecordSet = CreateObject("ADODB.Recordset")
     
    Dim CS, TSQL
     
    CS = "Provider=SQLOLEDB;Data Source=NomServeurSQL;" & _
            "Trusted_Connection=Yes;Initial Catalog=NomDB;" & _
            "User ID=Utilisateur;"
     
    objConnection.Open CS
     
    /* Gestion WMI*/
     
    Dim Computer, WSQL
    Dim Cpt
     
    Computer = "NomMachine"
     
    WSQL = "SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_Processor' AND TargetInstance.name = '_Total'"
     
    Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2").ExecNotificationQuery(WSQL)
     
    Cpt = 1
    Do While Cpt <= 10 /* Limitation à 10 occurrences uniquement pour le test) */
    	Set oEvent = oWMI.NextEvent()
     
    	TSQL = "INSERT INTO dbo.Test (NomMachine, PourcentageProcesseur) " &_
    			"VALUES (" & "'" & Computer & "'," & oEvent.TargetInstance.PercentProcessorTime & ")"
     
    	objRecordSet.Open TSQL, objConnection, adOpenStatic, adLockOptimistic
     
    	Cpt = Cpt+1
    Loop
     
    Set objRecordSet = Nothing
    Set objConnection = Nothing
    Si quelqu'un se sent inspiré par les jetons, je serai toujours intéressé par sa solution ;-)

    Bon code à tous ;-)

  7. #7
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Pour le moment je suis dans le même cas que vous. Je n'arrive pas à définir le bon jeton dans les jobs de réponses de l'agent SQL Server.

    La documentation précise cependant bien qu'il est possible de récupérer n'importe quelle propriété WMI.

    Si j'arrive à trouver d'ici là je posterais une réponse.

    ++

Discussions similaires

  1. [SQL 2K5] Etape Calcul Cube et Agent SQL Serveur
    Par scornille dans le forum SSAS
    Réponses: 2
    Dernier message: 18/06/2009, 15h48
  2. attacher une BD sql serveur 9 avec sql serveur 7
    Par rolph dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/02/2006, 17h15
  3. Cherche serveur de test SQL
    Par leolana dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 06/10/2005, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo