Compartir a través de


Descripción del proveedor WMI para eventos de servidor

El proveedor WMI para eventos de servidor permite usar 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.

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 denominado SQL/Notifications/ProcessWMIEventProviderNotification/v1.0. El servicio coloca el evento en una cola predefinida en msdb denominada WMIEventProviderNotificationQueue. (El proveedor crea dinámicamente el servicio y la cola 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.

Diagrama de flujo del proveedor WMI para eventos de servidor Diagrama

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 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 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 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: \\.\root\Microsoft\SqlServer\ServerEvents\instance_name, donde instance_name valor predeterminado es MSSQLSERVER. Para obtener más información sobre cómo conectarse a un espacio de nombres WMI para una instancia de SQL Server, vea Usar WQL con el proveedor WMI para eventos de servidor.

El archivo DLL del proveedor, Sqlwep.dll, se carga solo 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 Sample: Creating a Agente SQL Server Alert Using the WMI Provider for Server Events. 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: Uso del proveedor de eventos WMI en código administrado. También hay más información disponible sobre WMI en el SDK de Microsoft .NET Framework.

Consulte también

Conceptos del proveedor WMI para eventos de servidor