이벤트 쿼리에 대한 SELECT 문
다양한 SELECT 문을 사용하여 이벤트 정보를 쿼리할 수 있습니다. 문은 기본 문일 수 있으며 쿼리에서 반환되는 결과 집합의 범위를 좁히기 위해 더 제한적일 수 있습니다.
다음 예제는 이벤트 정보를 쿼리하는 데 사용되는 기본 SELECT 문입니다.
SELECT * FROM EventClass
소비자가 쿼리를 제출하면 EventClass가 나타내는 이벤트의 모든 발생에 대한 알림을 받는 요청입니다. 이 요청에는 모든 이벤트 시스템 및 비시스템 속성에 관한 알림 요청이 포함됩니다. 이벤트 공급자는 쿼리를 제출하면 EventClass가 나타내는 이벤트가 발생할 때 알림 생성에 대한 지원을 등록합니다.
소비자는 SELECT 문의 별표(*) 대신 개별 속성을 지정할 수 있습니다.
다음 예제에서는 특정 속성을 쿼리하는 방법을 보여줍니다.
SELECT property_1, property_2, property_3 FROM MyEventClass
그러나 쿼리가 포함 개체 속성을 지정하더라도 포함 개체의 모든 속성이 반환됩니다.
다음 예제에서는 동일한 데이터를 반환하는 두 개의 쿼리를 보여줍니다.
SELECT targetInstance FROM __InstanceCreationEvent within 2
WHERE targetinstance isa "Win32_Process"
SELECT targetInstance.Name FROM __InstanceCreationEvent within 2
WHERE targetinstance isa "Win32_Process"
시스템 속성이 특정 쿼리와 관련이 없는 경우 NULL을 포함합니다. 예를 들어 __RELPATH 시스템 속성 값은 모든 이벤트 쿼리에 대해 NULL입니다.
다음 시스템 속성에는 이벤트 쿼리에 대한 NULL이 포함되어 있습니다.
- \_\_Namespace \_\_Path \_\_RelPath \_\_Server
자세한 내용은 WMI 시스템 속성 참조를 참조하세요.
모든 이벤트 쿼리에는 선택적 WHERE 절이 포함될 수 있지만 WHERE 절은 주로 소비자가 추가 필터링을 지정하는 데 사용됩니다. 소비자는 항상 WHERE 절을 지정하는 것이 좋습니다. 복잡한 쿼리의 비용은 불필요한 알림을 전달하고 처리하는 비용에 비해 미미한 수준입니다.
다음 예제에서는 가상 클래스 EmailEvent에 영향을 미치는 모든 인스턴스 수정 이벤트의 알림을 요청하는 쿼리를 보여줍니다.
SELECT * FROM EmailEvent
EmailEvent와 연결된 이벤트가 자주 발생하는 경우, 소비자는 이벤트로 넘쳐납니다. 더 나은 쿼리는 중요도 수준이 높은 경우와 같이 특정 조건이 지정된 클래스의 속성을 사용하는 경우에만 이벤트를 요청합니다.
다음 예제에서는 EmailImportance가 EmailEvent 클래스의 속성인 경우에 사용할 수 있는 쿼리를 보여줍니다.
SELECT * FROM EmailEvent WHERE EmailImportance > 3
WMI는 여러 가지 이유로 쿼리를 거부할 수 있습니다. 예를 들어, 쿼리가 너무 복잡하거나 리소스를 너무 많이 사용하여 평가가 불가능할 수 있습니다. 이 경우 WMI는 WBEM_E_INVALID_QUERY 같은 특정 오류 코드를 반환합니다.
포함 개체의 속성은 WHERE 절에서 사용할 수 있습니다.
다음 예제에서는 __InstanceModificationEvent 시스템 클래스의 TargetInstance 속성이 Win32_LogicalDisk 포함 개체이고 FreeSpace가 Win32_LogicalDisk 속성인 개체를 쿼리하는 방법을 보여줍니다.
SELECT * FROM __InstanceModificationEvent WITHIN 600
WHERE TargetInstance ISA "Win32_LogicalDisk"
AND TargetInstance.FreeSpace < 1000000