Comprendre le fournisseur WMI pour les événements de serveur

S’applique à :SQL Server

Le fournisseur WMI pour les événements serveur vous permet d’utiliser WMI (Windows Management Instrumentation) pour surveiller les événements dans SQL Server. Le fournisseur fonctionne en transformant SQL Server en objet WMI managé. Tout événement pouvant générer une notification d’événement dans SQL Server peut être exploité par le WMI à l’aide de ce fournisseur. En outre, en tant qu’application de gestion qui interagit avec WMI, SQL Server Agent peut répondre à ces événements, augmentant l’étendue des événements couverts par SQL Server Agent sur les versions antérieures.

Les applications de gestion telles que SQL Server Agent peuvent accéder aux événements SQL Server à l’aide du fournisseur WMI pour les événements serveur en émettant des instructions WMI Query Language (WQL). Le langage WQL est un sous-ensemble simplifié du langage SQL, avec quelques extensions spécifiques à WMI. À l'aide du langage WQL, une application récupère un type d'événement à partir d'une base de données ou d'un objet de base de données spécifique. Le fournisseur WMI pour les événements serveur traduit la requête en une notification d'événements, ce qui entraîne la création effective d'une notification d'événements dans la base de données cible. Pour plus d’informations sur le fonctionnement des notifications d’événements dans SQL Server, consultez les concepts du fournisseur WMI pour les événements de serveur. Les événements qui peuvent être interrogés sont répertoriés dans le fournisseur WMI pour les classes et propriétés des événements serveur.

Lorsqu’un événement se produit qui déclenche la notification d’événement pour envoyer un message, le message est envoyé à un service cible prédéfini dans msdb ce qui est nommé SQL/Notifications/ProcessWMIEventProviderNotification/v1.0. Le service place l’événement dans une file d’attente prédéfinie dans msdb laquelle il est nommé WMIEventProviderNotificationQueue. (Le service et la file d’attente sont créés dynamiquement par le fournisseur lors de sa première connexion à SQL Server.) Le fournisseur lit ensuite les données d’événement de cette file d’attente et les transforme en format d’objet managé (MOF) avant de les renvoyer à l’application. L'illustration ci-dessous montre ce processus.

Flow diagram of the WMI Provider for Server Events.

Examinons, par exemple, la requête WQL suivante :

SELECT * FROM DDL_DATABASE_LEVEL_EVENTS
WHERE DatabaseName = 'AdventureWorks2022';

En réponse à cette requête, le fournisseur WMI pour les événements serveur crée la notification d'événements équivalente dans la base de données cible :

USE AdventureWorks2022;
GO
CREATE EVENT NOTIFICATION SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
    ON DATABASE
    WITH FAN_IN
    FOR DDL_DATABASE_LEVEL_EVENTS
    TO SERVICE
        'SQL/Notifications/ProcessWMIEventProviderNotification/v1.0',
        'A7E5521A-1CA6-4741-865D-826F804E5135';
GO

Dans cet exemple, SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9 il s’agit d’un identificateur Transact-SQL constitué du préfixe SQLWEP_ et d’un GUID. SQLWEP crée un GUID pour chaque identificateur. La valeur A7E5521A-1CA6-4741-865D-826F804E5135 de la TO SERVICE clause est le GUID qui identifie l’instance broker dans la msdb base de données.

Pour plus d’informations sur l’utilisation de WQL, consultez Utilisation de WQL avec le fournisseur WMI pour les événements de serveur.

Les applications de gestion dirigent le fournisseur WMI pour les événements de serveur vers une instance de SQL Server en se connectant à un espace de noms WMI défini par le fournisseur. Le service Windows WMI mappe cet espace de noms à la DLL du fournisseur, sqlwep.dllet le charge en mémoire. Le fournisseur gère un espace de noms WMI pour les événements serveur pour chaque instance de SQL Server, et le format est , où <instance_name> la MSSQLSERVERvaleur par défaut est \\.\<root>\Microsoft\SqlServer\ServerEvents\<instance_name>. Pour plus d’informations sur la connexion à un espace de noms WMI pour une instance de SQL Server, consultez Utilisation de WQL avec le fournisseur WMI pour les événements de serveur.

La DLL du fournisseur, est sqlwep.dllchargée une seule fois dans le service hôte WMI du système d’exploitation du serveur, quel que soit le nombre d’instances de SQL Server sur le serveur.

Pour obtenir un exemple d’application de gestion SQL Server Agent qui utilise le fournisseur WMI pour les événements serveur, consultez l’exemple : Créer une alerte SQL Server Agent avec le fournisseur WMI. Pour obtenir un exemple d’application de gestion qui utilise le fournisseur WMI pour les événements de serveur dans le code managé, consultez Exemple : Utiliser le fournisseur d’événements WMI avec .NET Framework. Des informations supplémentaires sont également disponibles sur WMI dans le Kit de développement logiciel (SDK) Microsoft .NET Framework.