Descripción del proveedor WMI para eventos de servidor
El proveedor WMI para eventos de servidor permite utilizar el Instrumental de administración de Windows (WMI) para supervisar eventos en SQL Server. El proveedor trabaja convirtiendo SQL Server en un objeto WMI administrado. Todos los eventos que puedan generar una notificación de eventos en SQL Server se aprovechan en el WMI que utiliza el proveedor. Además, como una aplicación de administración que interactúa con el WMI, el Agente SQL Server puede responder a estos eventos aumentando el ámbito de los eventos cubiertos por el Agente SQL Server en versiones anteriores.
Las aplicaciones de administración como el Agente SQL Server pueden utilizar el proveedor WMI para eventos de servidor para obtener acceso a los eventos de SQL Server emitiendo instrucciones WQL (Lenguaje de consulta de WMI). 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 acerca de cómo funcionan las notificaciones de eventos en SQL Server, vea Notificaciones de eventos (motor de base de datos). Los eventos que se pueden consultar se enumeran en Proveedor WMI de las clases y propiedades de eventos de servidor.
Cuando se produce un evento que activa la notificación de eventos para enviar un mensaje, el mensaje entra en un servicio de destino predefinido en msdb que se denomina SQL/Notifications/ProcessWMIEventProviderNotification/v1.0. El servicio coloca el evento en una cola predefinida de msdb denominada WMIEventProviderNotificationQueue. (Tanto el servicio como la cola son creados dinámicamente por el proveedor cuando se conecta por primera vez a SQL Server). A continuación, el proveedor lee los datos de evento de la cola y los convierte al formato de objetos administrados (MOF, Managed Object Format) 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 = 'AdventureWorks'
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 AdventureWorks ;
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 compuesto por el prefijo SQLWEP_ y un GUID. SQLWEP crea un nuevo GUID para cada identificador. El valor A7E5521A-1CA6-4741-865D-826F804E5135 de la cláusula TO SERVICE es el GUID que identifica la instancia de agente en la base de datos msdb.
Para obtener más información sobre cómo trabajar con WQL, vea Usar WQL con el proveedor WMI para eventos de servidor.
Las aplicaciones de administración dirigen el proveedor WMI de eventos de servidor a una instancia de SQL Server conectándose a un espacio de nombres WMI definido por el proveedor. El servicio WMI de Windows asigna este espacio de nombres a la DLL del proveedor, Sqlwep.dll, y lo carga en memoria. El proveedor administra un espacio de nombres WMI de eventos de servidor para cada instancia de SQL Server y el formato es: \\.\raíz\Microsoft\SqlServer\ServerEvents\nombre_instancia, donde nombre_instancia corresponde al valor predeterminado MSSQLSERVER. Para obtener más información acerca de cómo conectarse a un espacio de nombres WMI para una instancia de SQL Server, vea Trabajar con el proveedor WMI para eventos de servidor.
La DLL del proveedor, Sqlwep.dll, sólo se carga una vez en el servicio de host de WMI del sistema operativo del servidor, con independencia del número de instancias de SQL Server que haya en el servidor.
Para consultar un ejemplo de una aplicación de administración de Agente SQL Server que utiliza el proveedor WMI de eventos de servidor, vea Ejemplo: crear una alerta del Agente SQL Server utilizando el proveedor WMI para eventos de servidor. Para consultar un ejemplo de una aplicación de administración que utiliza el proveedor WMI de eventos de servidor en código administrado, vea Ejemplo: utilizar el proveedor de eventos WMI con .NET Framework. También puede obtener más información sobre WMI en Microsoft.NET Framework SDK.