Udostępnij za pośrednictwem


INSTRUKCJA SELECT dla zapytań o zdarzenia

Do wykonywania zapytań dotyczących informacji o zdarzeniach można użyć różnych instrukcji SELECT. Instrukcje mogą być instrukcjami podstawowymi lub mogą być bardziej restrykcyjne, aby zawęzić zestaw wyników zwracany z zapytania.

Poniższy przykład to podstawowa instrukcja SELECT używana do wykonywania zapytań dotyczących informacji o zdarzeniach.

SELECT * FROM EventClass

Gdy użytkownik przesyła zapytanie, jest to żądanie powiadomienia o wszystkich wystąpieniach zdarzenia reprezentowanego przez EventClass. To żądanie zawiera żądanie powiadomienia o wszystkich właściwościach systemu zdarzeń i niesystemowych. Gdy dostawca zdarzeń przesyła zapytanie, rejestruje obsługę generowania powiadomień, gdy wystąpi zdarzenie reprezentowane przez EventClass.

Konsumenci mogą określać poszczególne właściwości zamiast gwiazdki (*) w instrukcji SELECT.

W poniższym przykładzie pokazano, jak wykonywać zapytania dotyczące określonych właściwości.

SELECT property_1, property_2, property_3 FROM MyEventClass

Jednak zwracane są wszystkie właściwości obiektu osadzonego, nawet jeśli zapytanie określa właściwości obiektu osadzonego.

W poniższym przykładzie przedstawiono dwa zapytania zwracające te same dane.

SELECT targetInstance FROM __InstanceCreationEvent within 2
    WHERE targetinstance isa "Win32_Process"
SELECT targetInstance.Name FROM __InstanceCreationEvent within 2
    WHERE targetinstance isa "Win32_Process"

Jeśli właściwość systemowa nie jest odpowiednia dla określonego zapytania, zawiera null. Na przykład wartość właściwości systemu __RELPATH jest null dla wszystkich zapytań dotyczących zdarzeń.

Następujące właściwości systemowe zawierają null dla zapytań o zdarzenia:

\_\_Namespace \_\_Path \_\_RelPath \_\_Server

Aby uzyskać więcej informacji, zobacz Odwołania do właściwości systemu WMI.

Wszystkie zapytania dotyczące zdarzeń mogą zawierać opcjonalną klauzulę WHERE, ale klauzule WHERE są używane głównie przez konsumentów do określania dodatkowego filtrowania. Zdecydowanie zaleca się, aby konsumenci zawsze określali klauzulę WHERE. Koszt złożonego zapytania jest minimalny w porównaniu z kosztem dostarczania i przetwarzania niepotrzebnych powiadomień.

W poniższym przykładzie pokazano zapytanie, które żąda powiadomień o wszystkich zdarzeniach modyfikacji wystąpienia, które mają wpływ na hipotetyczną klasę EmailEvent.

SELECT * FROM EmailEvent

Jeśli często występują zdarzenia skojarzone z EmailEvent, odbiorca jest zalany zdarzeniami. Lepsze zapytanie żąda zdarzeń tylko wtedy, gdy określone warunki używają właściwości określonej klasy, na przykład gdy poziom ważności jest wysoki.

W poniższym przykładzie pokazano zapytanie, którego można użyć, jeśli EmailImportance jest właściwością klasy EmailEvent.

SELECT * FROM EmailEvent WHERE EmailImportance > 3

Należy pamiętać, że usługa WMI może odrzucić zapytanie z wielu powodów. Na przykład zapytanie może być zbyt złożone lub intensywnie obciążać zasoby do oceny. W takim przypadku usługa WMI zwraca określone kody błędów, takie jak WBEM_E_INVALID_QUERY.

Właściwości obiektów osadzonych można użyć w klauzuli WHERE.

W poniższym przykładzie pokazano, jak wykonywać zapytania dotyczące obiektów, w których właściwość TargetInstance klasy systemu __InstanceModificationEvent jest osadzonym obiektem Win32_LogicalDisk, a FreeSpace jest właściwością Win32_LogicalDisk.

SELECT * FROM __InstanceModificationEvent WITHIN 600
    WHERE TargetInstance ISA "Win32_LogicalDisk" 
    AND   TargetInstance.FreeSpace < 1000000