Descripción del proveedor WMI para eventos de servidor
Se aplica a: SQL Server
El proveedor WMI para eventos de servidor le permite utilizar el Instrumental de administración de Windows (WMI) para supervisar eventos en SQL Server. El proveedor funciona convirtiendo SQL Server en un objeto WMI administrado. El WMI puede aprovechar cualquier evento que pueda generar una notificación de eventos en SQL Server mediante este proveedor. Además, como una aplicación de administración que interactúa con el WMI, Agente SQL Server puede responder a estos eventos, lo que aumenta el ámbito de los eventos cubiertos por Agente SQL Server en versiones anteriores.
Las aplicaciones de administración como Agente SQL Server pueden acceder a eventos de SQL Server mediante el proveedor WMI para eventos de servidor mediante la emisión de instrucciones WMI Query Language (WQL). WQL es un subconjunto simplificado de lenguaje de consulta estructurado (SQL) con algunas extensiones específicas de WMI. Al utilizar WQL, una aplicación recupera un tipo de evento en una base de datos u objeto de base de datos específicos. El proveedor WMI para eventos de servidor convierte la consulta en una notificación de eventos, creando eficazmente una notificación de eventos en la base de datos de destino. Para obtener más información sobre cómo funcionan las notificaciones de eventos en SQL Server, vea Conceptos del proveedor WMI para eventos de servidor. Los eventos que se pueden consultar se muestran en WMI Provider for Server Events classes and properties (Proveedor WMI para propiedades y clases de eventos de servidor).
Cuando se produce un evento que desencadena la notificación de eventos para enviar un mensaje, el mensaje va a un servicio de destino predefinido en msdb
que se denomina SQL/Notifications/ProcessWMIEventProviderNotification/v1.0
. El servicio coloca el evento en una cola predefinida en msdb
que se denomina WMIEventProviderNotificationQueue
. (Tanto el servicio como la cola se crean dinámicamente mediante el proveedor cuando se conecta por primera vez a SQL Server). A continuación, el proveedor lee los datos de eventos de esta cola y los transforma en formato de objeto administrado (MOF) antes de devolverlos a la aplicación. En la siguiente ilustración se muestra este proceso.
Por ejemplo, considere la siguiente consulta WQL:
SELECT * FROM DDL_DATABASE_LEVEL_EVENTS
WHERE DatabaseName = 'AdventureWorks2022';
En respuesta a esta consulta, el proveedor WMI de eventos de servidor crea la notificación de eventos equivalente en la base de datos de destino:
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
En este ejemplo, SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
es un identificador de Transact-SQL que se compone del prefijo SQLWEP_
y un GUID. SQLWEP
crea un nuevo GUID para cada identificador. El valor A7E5521A-1CA6-4741-865D-826F804E5135
de la TO SERVICE
cláusula es el GUID que identifica la instancia del agente en la msdb
base de datos.
Para obtener más información sobre cómo trabajar con WQL, consulte Uso de WQL con el proveedor WMI para eventos de servidor.
Las aplicaciones de administración dirigen el proveedor WMI para eventos de servidor a una instancia de SQL Server mediante la conexión a un espacio de nombres WMI definido por el proveedor. El servicio WMI de Windows asigna este espacio de nombres al archivo DLL del proveedor, sqlwep.dll
y lo carga en memoria. El proveedor administra un espacio de nombres WMI para eventos de servidor para cada instancia de SQL Server y el formato es , donde <instance_name>
el MSSQLSERVER
valor predeterminado es \\.\<root>\Microsoft\SqlServer\ServerEvents\<instance_name>
. Para obtener más información sobre cómo conectarse a un espacio de nombres WMI para una instancia de SQL Server, vea Uso de WQL con el proveedor WMI para eventos de servidor.
El archivo DLL del proveedor, sqlwep.dll
, solo se carga una vez en el servicio host WMI del sistema operativo del servidor, independientemente de cuántas instancias de SQL Server estén en el servidor.
Para obtener un ejemplo de una aplicación de administración de Agente SQL Server que usa el proveedor WMI para eventos de servidor, vea Ejemplo: Crear una alerta de Agente SQL Server con el proveedor WMI. Para obtener un ejemplo de una aplicación de administración que usa el proveedor WMI para eventos de servidor en código administrado, vea Ejemplo: Usar el proveedor de eventos WMI con .NET Framework. También hay más información disponible sobre WMI en el SDK de Microsoft .NET Framework.