서버 이벤트용 WMI 공급자를 사용하면 WMI(Windows Management Instrumentation)를 사용하여 SQL Server의 이벤트를 모니터링할 수 있습니다. 공급자는 SQL Server를 관리되는 WMI 개체로 전환하여 작동합니다. SQL Server에서 이벤트 알림을 생성할 수 있는 모든 이벤트는 이 공급자를 사용하여 WMI에서 활용할 수 있습니다. 또한 WMI와 상호 작용하는 관리 애플리케이션인 SQL Server 에이전트는 이러한 이벤트에 응답하여 이전 릴리스에서 SQL Server 에이전트에서 다루는 이벤트의 범위를 늘릴 수 있습니다.
SQL Server 에이전트와 같은 관리 애플리케이션은 WQL(WMI 쿼리 언어) 문을 실행하여 서버 이벤트용 WMI 공급자를 사용하여 SQL Server 이벤트에 액세스할 수 있습니다. WQL은 일부 WMI별 확장이 있는 SQL(구조적 쿼리 언어)의 간소화된 하위 집합입니다. WQL을 사용할 때 애플리케이션은 특정 데이터베이스 또는 데이터베이스 개체에 대해 이벤트 형식을 검색합니다. 서버 이벤트용 WMI 공급자는 쿼리를 이벤트 알림으로 변환하여 대상 데이터베이스에 이벤트 알림을 효과적으로 만듭니다. SQL Server에서 이벤트 알림이 작동하는 방법에 대한 자세한 내용은 서버 이벤트 개념에 대한 WMI 공급자를 참조하세요. 쿼리할 수 있는 이벤트는 WMI Provider for Server Events 클래스 및 속성에 나열됩니다.
메시지를 보내기 위해 이벤트 알림을 트리거하는 이벤트가 발생하면 메시지는 SQL/Notifications/ProcessWMIEventProviderNotification/v1.0이라는 msdb의 미리 정의된 대상 서비스로 이동합니다. 서비스는 WMIEventProviderNotificationQueue라는 msdb의 미리 정의된 큐에 이벤트를 배치합니다. (서비스와 큐는 모두 SQL Server에 처음 연결할 때 공급자가 동적으로 만듭니다.) 그런 다음 공급자는 이 큐에서 이벤트 데이터를 읽고 MOF(관리형 개체 형식)로 변환한 후 애플리케이션으로 반환합니다. 다음 그림에서 이 프로세스를 나타냅니다.
예를 들어 다음 WQL 쿼리를 고려합니다.
SELECT * FROM DDL_DATABASE_LEVEL_EVENTS
WHERE DatabaseName = 'AdventureWorks'
이 쿼리에 대한 응답으로 서버 이벤트용 WMI 공급자는 대상 데이터베이스에 해당하는 이벤트 알림을 만듭니다.
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
이 예제 SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9 에서는 접두 SQLWEP_ 사 및 GUID로 구성된 Transact-SQL 식별자입니다.
SQLWEP 는 각 식별자에 대한 새 GUID를 만듭니다. 절의 TO SERVICE 값 A7E5521A-1CA6-4741-865D-826F804E5135 은 msdb 데이터베이스에서 broker 인스턴스를 식별하는 GUID입니다.
WQL을 사용하는 방법에 대한 자세한 내용은 WQL을 서버 이벤트용 WMI 공급자와 함께 사용하는 방법을 참조하세요.
관리 애플리케이션은 공급자가 정의한 WMI 네임스페이스에 연결하여 서버 이벤트용 WMI 공급자를 SQL Server 인스턴스로 전달합니다. Windows WMI 서비스는 이 네임스페이스를 공급자 DLL에 매핑하고 Sqlwep.dll메모리에 로드합니다. 공급자는 SQL Server의 각 인스턴스에 대한 서버 이벤트에 대한 WMI 네임스페이스를 관리하며 형식은 \\.\root\Microsoft\SqlServer\ServerEvents\instance_name이며, 여기서 instance_name 기본적으로 MSSQLSERVER로 설정됩니다. SQL Server 인스턴스의 WMI 네임스페이스에 연결하는 방법에 대한 자세한 내용은 서버 이벤트용 WMI 공급자와 함께 WQL 사용을 참조하세요.
Sqlwep.dll공급자 DLL은 서버에 있는 SQL Server 인스턴스 수에 관계없이 서버 운영 체제의 WMI 호스트 서비스에 한 번만 로드됩니다.
서버 이벤트용 WMI 공급자를 사용하는 SQL Server 에이전트 관리 애플리케이션의 예는 샘플: 서버 이벤트용 WMI 공급자를 사용하여 SQL Server 에이전트 경고 만들기를 참조하세요. 관리 코드에서 서버 이벤트용 WMI 공급자를 사용하는 관리 애플리케이션의 예는 샘플: 관리 코드에서 WMI 이벤트 공급자를 사용하는 예제를 참조하세요. Microsoft .NET Framework SDK의 WMI에 대한 자세한 정보도 제공됩니다.