다음을 통해 공유


서버 이벤트용 WMI 공급자 이해

서버 이벤트용 WMI 공급자를 사용하면 WMI(Windows Management Instrumentation)를 사용하여 SQL Server 이벤트를 모니터링할 수 있습니다. 공급자는 SQL Server 관리되는 WMI 개체로 전환하여 작동합니다. SQL Server 이벤트 알림을 생성할 수 있는 모든 이벤트는 이 공급자를 사용하여 WMI에서 활용할 수 있습니다. 또한 WMI와 상호 작용하는 관리 애플리케이션인 SQL Server 에이전트 이러한 이벤트에 응답하여 이전 릴리스에서 SQL Server 에이전트 적용되는 이벤트의 scope 늘릴 수 있습니다.

SQL Server 에이전트 같은 관리 애플리케이션은 WQL(WMI 쿼리 언어) 문을 실행하여 서버 이벤트용 WMI 공급자를 사용하여 SQL Server 이벤트에 액세스할 수 있습니다. WQL은 몇 가지 WMI 관련 확장 기능이 포함된 SQL(구조적 쿼리 언어)의 단순화된 일부입니다. WQL을 사용할 경우 애플리케이션에서는 특정 데이터베이스나 데이터베이스 개체에 대해 이벤트 유형을 검색합니다. 서버 이벤트용 WMI 공급자는 쿼리를 이벤트 알림으로 변환하여 대상 데이터베이스의 이벤트 알림을 효율적으로 생성합니다. SQL Server 이벤트 알림이 작동하는 방법에 대한 자세한 내용은 WMI Provider for Server Events Concepts(서버 이벤트 개념용 WMI 공급자)를 참조하세요. 쿼리할 수 이벤트는 서버 이벤트용 WMI 공급자 클래스 및 라이브러리에 나와 있습니다.

이벤트 알림으로 하여금 메시지를 보내도록 트리거하는 이벤트가 발생하면 메시지는 SQL/Notifications/ProcessWMIEventProviderNotification/v1.0 이라는 msdb에 미리 정의된 대상 서비스로 이동합니다. 대상 서비스는 WMIEventProviderNotificationQueue 라는 msdb에 미리 정의된 큐에 이 이벤트를 추가합니다. (서비스와 큐는 SQL Server 처음 연결할 때 공급자가 동적으로 만듭니다.) 그런 다음 공급자는 이 큐에서 이벤트 데이터를 읽고 MOF(관리형 개체 형식)로 변환한 후 애플리케이션에 반환합니다. 다음 그림에서 이 프로세스를 나타냅니다.

서버 이벤트용 WMI 공급자의 흐름 다이어그램 서버 이벤트

예를 들어 다음 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_C8820155B0E9SQLWEP_ 두사 및 GUID로 구성된 Transact-SQL 식별자입니다. SQLWEP는 각 식별자의 GUID를 새로 만듭니다. A7E5521A-1CA6-4741-865D-826F804E5135 절의 TO SERVICE 값은 msdb 데이터베이스의 Broker 인스턴스를 식별하는 GUID입니다.

WQL로 작업하는 방법은 서버 이벤트용 WMI 공급자에 WQL 사용을 참조하십시오.

관리 애플리케이션은 공급자가 정의한 WMI 네임스페이스에 연결하여 서버 이벤트용 WMI 공급자를 SQL Server instance 전달합니다. Windows WMI 서비스는 이 네임스페이스를 공급자 DLL인 Sqlwep.dll에 매핑하여 메모리에 로드합니다. 공급자는 SQL Server 각 instance 서버 이벤트에 대한 WMI 네임스페이스를 관리하며 형식은 \\.\root\Microsoft\SqlServer\ServerEvents\instance_name. 여기서 instance_name 기본적으로 MSSQLSERVER로 설정됩니다. SQL Server instance WMI 네임스페이스에 연결하는 방법에 대한 자세한 내용은 WQL을 서버 이벤트용 WMI 공급자와 함께 사용을 참조하세요.

Sqlwep.dll 공급자 DLL은 서버에 있는 SQL Server 인스턴스 수에 관계없이 서버 운영 체제의 WMI 호스트 서비스에 한 번만 로드됩니다.

서버 이벤트용 WMI 공급자를 사용하는 SQL Server 에이전트 관리 애플리케이션의 예는 샘플: 서버 이벤트에 대한 WMI 공급자를 사용하여 SQL Server 에이전트 경고 만들기를 참조하세요. 관리 코드에서 서버 이벤트용 WMI 공급자를 사용하는 관리 애플리케이션에 대한 예는 예제: 관리 코드에서 WMI 이벤트 공급자 사용을 참조하십시오. Microsoft .NET Framework SDK의 WMI에 대한 자세한 정보도 확인할 수 있습니다.

참고 항목

서버 이벤트용 WMI 공급자 개념