Compartilhar via


Noções básicas sobre o provedor WMI para eventos de servidor

O Provedor WMI para Eventos de Servidor permite que você use a WMI (Instrumentação de Gerenciamento do Windows) para monitorar eventos no SQL Server. O provedor funciona transformando o SQL Server em um objeto WMI gerenciado. Qualquer evento que possa gerar uma notificação de evento no SQL Server pode ser aproveitado pelo WMI usando esse provedor. Além disso, como um aplicativo de gerenciamento que interage com o WMI, o SQL Server Agent pode responder a esses eventos, aumentando o escopo dos eventos cobertos pelo SQL Server Agent em versões anteriores.

Aplicativos de gerenciamento, como o SQL Server Agent, podem acessar eventos do SQL Server usando o Provedor WMI para Eventos de Servidor, emitindo instruções WQL (WMI Query Language). O WQL é um subconjunto simplificado de SQL (linguagem de consulta estruturada), com algumas extensões específicas do WMI. Ao usar o WQL, um aplicativo recupera um tipo de evento em relação a um banco de dados ou objeto de banco de dados específico. O Provedor WMI para Eventos de Servidor converte a consulta em uma notificação de evento, criando efetivamente uma notificação de evento no banco de dados de destino. Para obter mais informações sobre como as notificações de eventos funcionam no SQL Server, consulte Conceitos do Provedor WMI para Eventos de Servidor. Os eventos que podem ser consultados são listados no Provedor WMI para Classes e Propriedades de Eventos de Servidor.

Quando ocorre um evento que dispara a notificação de evento para enviar uma mensagem, a mensagem vai para um serviço de destino predefinido no msdb chamado SQL/Notifications/ProcessWMIEventProviderNotification/v1.0. O serviço coloca o evento em uma fila predefinida no msdb chamada WMIEventProviderNotificationQueue. (O serviço e a fila são criados dinamicamente pelo provedor quando ele se conecta pela primeira vez ao SQL Server).) Em seguida, o provedor lê os dados do evento dessa fila e os transforma em MOF (formato de objeto gerenciado) antes de devolvê-los ao aplicativo. A ilustração a seguir mostra este processo.

Diagrama de fluxo do diagrama WMI Provider for Server Events

Por exemplo, considere a seguinte consulta WQL:

SELECT * FROM DDL_DATABASE_LEVEL_EVENTS
WHERE DatabaseName = 'AdventureWorks'

Em resposta a essa consulta, o Provedor WMI para Eventos de Servidor cria a notificação de evento equivalente no banco de dados 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

Neste exemplo, SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9 é um identificador Transact-SQL composto pelo prefixo SQLWEP_ e um GUID. SQLWEP cria um novo GUID para cada identificador. O valor A7E5521A-1CA6-4741-865D-826F804E5135 na TO SERVICE cláusula é o GUID que identifica a instância do agente no banco de dados msdb .

Para obter mais informações sobre como trabalhar com o WQL, consulte Como usar o WQL com o provedor WMI para eventos de servidor.

Os aplicativos de gerenciamento direcionam o Provedor WMI para Eventos de Servidor para uma instância do SQL Server conectando-se a um namespace WMI definido pelo provedor. O serviço WMI do Windows mapeia esse namespace para a DLL do provedor, Sqlwep.dlle o carrega na memória. O provedor gerencia um namespace WMI para Eventos de Servidor para cada instância do SQL Server e o formato é: \\.\root\Microsoft\SqlServer\ServerEvents\instance_name, em que instance_name padrão para MSSQLSERVER. Para obter mais informações sobre como se conectar a um namespace WMI para uma instância do SQL Server, consulte Como usar o WQL com o provedor WMI para eventos de servidor.

A DLL do provedor, Sqlwep.dll, é carregada apenas uma vez no serviço de host WMI do sistema operacional do servidor, independentemente de quantas instâncias do SQL Server estão no servidor.

Para obter um exemplo de um aplicativo de gerenciamento do SQL Server Agent que usa o provedor WMI para eventos de servidor, consulte Exemplo: Criando um alerta do SQL Server Agent usando o provedor WMI para eventos de servidor. Para obter um exemplo de um aplicativo de gerenciamento que usa o Provedor WMI para Eventos de Servidor no código gerenciado, consulte Exemplo: Usando o Provedor de Eventos WMI no Código Gerenciado. Mais informações também estão disponíveis sobre o WMI no SDK do Microsoft .NET Framework.

Consulte Também

Provedor WMI para conceitos de eventos de servidor