Поделиться через


Основные сведения о поставщике WMI для событий сервера

Поставщик инструментария WMI для событий сервера позволяет использовать инструментарий управления Windows (WMI) для контроля событий в SQL Server. В ходе своей работы поставщик преобразует SQL Server в управляемый объект инструментария WMI. Этот поставщик позволяет инструментарию WMI использовать все события, которые могут формировать уведомления о событии в SQL Server. Кроме того, агент SQL Server, играя роль управляющего приложения, взаимодействующего с инструментарием WMI, может реагировать на эти события, расширяя область событий, охватываемых агентом SQL Server предыдущих версий.

Приложения для управления, такие как агент SQL Server, могут получать доступ к событиям SQL Server с помощью поставщика WMI для событий сервера путем выполнения инструкций WMI Query Language (WQL). WQL является упрощенным подмножеством языка SQL с некоторыми расширениями, специфичными для WMI. При использовании языка WQL приложение получает тип события для определенной базы данных или объекта базы данных. Поставщик WMI для событий сервера преобразовывает запрос в уведомление о событии, создавая уведомление в целевой базе данных. Дополнительные сведения о работе уведомлений о событиях в SQL Server см. в разделе Уведомления о событиях (компонент Database Engine). События можно запросить и занести в список в поставщике инструментария WMI для классов событий и свойств сервера.

При возникновении события, приводящего к созданию уведомления о событии и отправке сообщения, сообщение направляется в заранее определенную целевую службу в msdb, называемую SQL/Notifications/ProcessWMIEventProviderNotification/v1.0. Служба помещает событие в заранее заданную очередь в msdb с именем WMIEventProviderNotificationQueue. (Служба и очередь создаются динамически при первом подключении поставщика к SQL Server.) Затем поставщик считывает сведения о событии из этой очереди и преобразует их в формат управляющих объектов (MOF), прежде чем возвращать их приложению. На следующем рисунке показан этот процесс.

Блок-схема поставщика WMI для событий сервера

Например, рассмотрим следующий WQL-запрос.

SELECT * FROM DDL_DATABASE_LEVEL_EVENTSWHERE DatabaseName = 'AdventureWorks'

В ответе на этот запрос поставщик инструментария WMI для событий сервера создает соответствующее уведомление о событии в целевой базе данных:

USE AdventureWorks ;GOCREATE 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

В этом примере SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9 является идентификатором Transact-SQL, состоящим из префикса SQLWEP_ и идентификатора GUID. SQLWEP создает новый GUID для каждого идентификатора. Значение A7E5521A-1CA6-4741-865D-826F804E5135 в предложении TO SERVICE является идентификатором GUID, указывающим экземпляра компонента Service Broker в базе данных msdb.

Дополнительные сведения о работе с WQL см. в разделе Использование WQL с поставщиком WMI для событий сервера.

Приложения для управления направляют поставщик инструментария WMI для событий сервера на экземпляр SQL Server путем подключения к пространству имен WMI, определенному поставщиком. Служба Windows WMI сопоставляет это пространство имен с файлом поставщика Sqlwep.dll и загружает его в память. Поставщик управляет пространством имен WMI для событий сервера для каждого экземпляра SQL Server с помощью следующего формата. \\.\root\Microsoft\SqlServer\ServerEvents\имя_экземпляра, где имя_экземпляра по умолчанию MSSQLSERVER. Дополнительные сведения о соединении с пространством имен WMI для получения экземпляра SQL Server, см. в разделе Работа с поставщиком WMI для событий сервера.

Библиотека DLL поставщика, Sqlwep.dll, загружается только один раз в службу узлов WMI открывающей системы сервера, независимо от количества экземпляров SQL Server, находящихся на сервере.

Пример приложения агент SQL Server для управления, использующего поставщик инструментария WMI для событий сервера, см. в разделе Образец. Создание предупреждения агента SQL Server при помощи поставщика WMI для событий сервера. Пример приложения для управления, использующего поставщик инструментария WMI для событий сервера на управляемом коде, см. в разделе Образец. Использование поставщика событий WMI с платформой .NET Framework. Дополнительные сведения о WMI также доступны в пакете Microsoft.NET Framework SDK.