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

적용 대상:SQL Server

서버 이벤트용 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(관리형 개체 형식)로 변환한 후 애플리케이션으로 반환합니다. 다음 그림에서 이 프로세스를 나타냅니다.

Flow diagram of the WMI Provider for Server Events.

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

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

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

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

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