Общие сведения о поставщике WMI для событий сервера
Область применения: SQL Server
Поставщик WMI для событий сервера позволяет использовать инструментарий управления Windows (WMI) для мониторинга событий в SQL Server. Поставщик работает, превратив SQL Server в управляемый объект WMI. Любое событие, которое может создать уведомление о событии в SQL Server, может использоваться WMI с помощью этого поставщика. Кроме того, в качестве приложения управления, взаимодействующего с WMI, агент SQL Server может реагировать на эти события, увеличивая область событий, охватываемых агент SQL Server более ранних выпусков.
Приложения управления, такие как агент SQL Server, могут получать доступ к событиям SQL Server с помощью поставщика WMI для событий сервера, выдавая инструкции WQL. WQL является упрощенным подмножеством языка SQL с некоторыми расширениями, специфичными для WMI. При использовании языка WQL приложение получает тип события для определенной базы данных или объекта базы данных. Поставщик WMI для событий сервера преобразовывает запрос в уведомление о событии, создавая уведомление в базе данных-получателе. Дополнительные сведения о том, как работают уведомления о событиях в SQL Server, см. в разделе "Поставщик WMI для событий сервера". События, которые можно запрашивать, перечислены в поставщике WMI для классов и свойств событий сервера.
При возникновении события, которое активирует уведомление о событии для отправки сообщения, сообщение переходит в предопределенную целевую службу, которая msdb
называется SQL/Notifications/ProcessWMIEventProviderNotification/v1.0
. Служба помещает событие в предопределенную очередь, которая msdb
называется WMIEventProviderNotificationQueue
. (Служба и очередь создаются динамически поставщиком при первом подключении к SQL Server.) Затем поставщик считывает данные события из этой очереди и преобразует его в формат управляемого объекта (MOF) перед возвращением в приложение. На следующем рисунке показан этот процесс.
Например, рассмотрим следующий WQL-запрос.
SELECT * FROM DDL_DATABASE_LEVEL_EVENTS
WHERE DatabaseName = 'AdventureWorks2022';
В ответе на этот запрос поставщик WMI для событий сервера создает соответствующее уведомление о событии в базе данных-получателе:
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
В этом примере SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
— это идентификатор Transact-SQL, состоящий из префикса SQLWEP_
и GUID. SQLWEP
создает новый идентификатор GUID для каждого идентификатора. Значением A7E5521A-1CA6-4741-865D-826F804E5135
в предложении TO SERVICE
является GUID, определяющий экземпляр брокера в msdb
базе данных.
Дополнительные сведения о работе с WQL см. в разделе "Использование WQL" с поставщиком WMI для событий сервера.
Приложения управления направляют поставщика WMI для событий сервера к экземпляру SQL Server путем подключения к пространству имен WMI, определенному поставщиком. Служба WMI Windows сопоставляет это пространство имен с библиотекой DLL sqlwep.dll
поставщика и загружает ее в память. Поставщик управляет пространством имен WMI для событий сервера для каждого экземпляра SQL Server, а формат — \\.\<root>\Microsoft\SqlServer\ServerEvents\<instance_name>
значение <instance_name>
по умолчанию MSSQLSERVER
. Дополнительные сведения о подключении к пространству имен WMI для экземпляра SQL Server см. в статье Об использовании WQL с поставщиком WMI для событий сервера.
Библиотека DLL sqlwep.dll
поставщика загружается только один раз в службу узла WMI операционной системы сервера независимо от количества экземпляров SQL Server на сервере.
Пример приложения управления агент SQL Server, использующего поставщика WMI для событий сервера, см. в примере: создание оповещения агент SQL Server с помощью поставщика WMI. Пример приложения управления, использующего поставщика WMI для событий сервера в управляемом коде, см. в примере: использование поставщика событий WMI с платформа .NET Framework. Дополнительные сведения о WMI также доступны в пакете SDK для Microsoft платформа .NET Framework.