WITHIN, klauzula
Odbiorcy zdarzeń używają klauzuli WITHIN w zapytaniach zdarzeń, aby określić interwał sondowania lub interwał grupowania .
Interwał sondowania to interwał używany przez instrumentację zarządzania Windows (WMI) do sondowania dostawcy danych odpowiedzialnego za klasę dla zdarzeń wewnętrznych, z których zdarzenie jest elementem członkowskim. Ten interwał to maksymalny czas, który może upłynąć przed dostarczeniem powiadomienia o zdarzeniu. Użytkownik używa interwału sondowania w klauzuli WITHIN, gdy konsument wymaga powiadomienia o zmianach w klasie, a dostawca zdarzeń jest niedostępny. Użytkownik rejestruje się w przypadku zdarzenia wewnętrznego i zawiera interwał sondowania.
Aby określić interwał sondowania, umieść klauzulę WITHIN bezpośrednio przed klauzulą WHERE, jak pokazano poniżej:
SELECT * FROM IntrinsicEventClass WITHIN interval WHERE property = value
IntrinsicEventClass to wewnętrzna klasa zdarzeń, której zdarzenie jest elementem członkowskim, interwał to interwał sondowania, a wartość jest wartością właściwości, na której odbiorca wymaga powiadomienia.
Interwał sondowania to liczba zmiennoprzecinkowa i może być ułamkowa do akceptowania wartości mniejszych niż 1 sekunda. Jednak interwał powinien reprezentować liczbę sekund, a nie bardzo małą wartość, taką jak 0,001, ponieważ określenie wartości, która jest zbyt mała, może spowodować, że usługa WMI odrzucić instrukcję jako nieprawidłową — ze względu na intensywny charakter sondowania. Ponieważ większość odbiorców zdarzeń nie wymaga natychmiastowego powiadomienia, zaleca się użycie interwału, który jest dłuższy niż 5 minut.
Poniższy przykład zapytania żąda sprawdzania przez usługę WMI co 10 sekund pod kątem zmian występujących w wystąpieniach klasy Win32_LogicalDisk. Jeśli wystąpienie klasy jest modyfikowane w określonym interwale sondowania, dla każdej modyfikacji jest wysyłane zdarzenie powiadomienia.
SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE TargetInstance ISA "Win32_LogicalDisk"
W zależności od zapytania dostawca zdarzeń i usługa WMI mogą udostępniać zadanie dostarczania zdarzeń. Na przykład dostawca zdarzeń obsługujący zdarzenia klas systemu __InstanceCreationEvent i __InstanceModificationEvent, a nie zdarzenia klasy systemu __InstanceDeletionEvent. Poniższe zapytanie umożliwia dostawcy zdarzeń generowanie zdarzeń tworzenia i modyfikacji w miarę ich występowania i dostarczanie ich podczas ich tworzenia. Zapytanie umożliwia również usłudze WMI generowanie zdarzeń __InstanceDeletionEvent co 10 (dziesięć) sekund przy użyciu mechanizmu sondowania.
SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE TargetInstance ISA "MyOwnClass"
Możesz również użyć klauzuli WITHIN, aby określić interwał grupowania. Interwał grupowania jest niepodpisaną 32-bitową liczbą całkowitą określającą okres, po otrzymaniu zdarzenia początkowego, podczas którego usługa WMI powinna zbierać podobne zdarzenia. Po wygaśnięciu tego okresu usługa WMI dostarcza zagregowane zdarzenie złożone ze wszystkich podobnych zdarzeń. Aby uzyskać więcej informacji, zobacz GROUP Clause.
Odbiorcy zdarzeń rejestrujący się w przypadku często występujących zdarzeń używają interwału grupowania z klauzulą WITHIN. Dodanie funkcji GROUP WITHIN do klauzuli WHERE w zapytaniu zdarzeń powoduje wysłanie jednego zagregowanego zdarzenia zamiast wielu zdarzeń w usłudze WMI. Zdarzenie agregacji jest reprezentowane przez klasę systemu __AggregateEvent.
Aby określić interwał grupowania, umieść klauzulę WITHIN bezpośrednio po klauzuli GROUP.
SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval
EventClass to klasa zdarzeń, której zdarzenie jest elementem członkowskim, wartość jest wartością właściwości, na której odbiorca wymaga powiadomienia, a interwał to interwał grupowania.
Aby uzyskać więcej informacji, zobacz Określanie typu zdarzenia do odbierania.
Użytkownicy zdarzeń stałych można tworzyć przy użyciu zapytań sondowania tylko wtedy, gdy masz uprawnienia administratora.