Поделиться через


Предложение IN

Потребители событий используют предложение WITHIN в запросах событий, чтобы указать интервал опроса или интервал группирования .

Интервал опроса — это интервал, который использует инструментарий управления Windows (WMI) для опроса поставщика данных, ответственного за класс встроенных событий, из которых запрашивается событие. Этот интервал — это максимальное время, которое может пройти перед уведомлением о событии. Потребитель использует интервал опроса в предложении WITHIN, если потребитель требует уведомления об изменениях в классе, а поставщик событий недоступен. Потребитель регистрирует встроенное событие и включает интервал опроса.

Чтобы указать интервал опроса, поместите предложение WITHIN непосредственно перед предложением WHERE, как показано ниже:

SELECT * FROM IntrinsicEventClass WITHIN interval  WHERE property = value

IntrinsicEventClass — это встроенный класс событий, в котором событие является членом, интервалом является интервал опроса, а значением является значение свойства, для которого потребитель требует уведомления.

Интервал опроса — это число с плавающей запятой и может быть дробным, чтобы принимать значения меньше 1 секунды. Однако интервал должен представлять собой несколько секунд, а не крайне небольшое значение, например 0,001, так как указание слишком небольшого значения может привести к отклонению инструкции wMI как недопустимой из-за ресурсоемкого характера опроса. Поскольку большинству потребителей событий не требуется немедленное уведомление, рекомендуется использовать интервал, превышающий 5 минут.

Следующий пример запроса запрашивает, чтобы WMI проверял каждые 10 секунд для изменений, возникающих в экземплярах класса Win32_LogicalDisk. Если экземпляр класса изменяется в пределах указанного интервала опроса, событие уведомления отправляется для каждого изменения.

SELECT * FROM __InstanceModificationEvent WITHIN 10  WHERE TargetInstance ISA "Win32_LogicalDisk"

В зависимости от запроса поставщик событий и WMI могут совместно использовать задачу предоставления событий. Например, поставщик событий, поддерживающий события __InstanceCreationEvent и __InstanceModificationEvent системных классов, а не события системного класса __InstanceDeletionEvent. Следующий запрос позволяет поставщику событий создавать события создания и изменения по мере их возникновения и доставлять их при создании. Запрос также позволяет WMI создавать события __InstanceDeletionEvent каждые 10 (десять) секунд с помощью механизма опроса.

SELECT * FROM __InstanceOperationEvent WITHIN 10  WHERE TargetInstance ISA "MyOwnClass"

Можно также использовать предложение WITHIN для указания интервала группировки. Интервал группировки — это 32-разрядное целое число без знака, указывающее период времени после получения начального события, в течение которого WMI должен собирать аналогичные события. По истечении этого периода времени WMI предоставляет агрегатное событие, состоящее из всех аналогичных событий. Дополнительные сведения см. в предложении GROUP.

Потребители событий, которые регистрируются для часто происходящих событий, используют интервал группировки с предложением WITHIN. Добавление GROUP IN в предложение WHERE в запросе событий приводит к отправке одного статистического события, а не многих событий. Агрегатное событие представлено __AggregateEvent системным классом.

Чтобы указать интервал группировки, поместите предложение WITHIN сразу после предложения GROUP.

SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval

EventClass — это класс событий, в котором событие является членом, значением является значение свойства, для которого потребитель требует уведомления, и интервал группирования.

Дополнительные сведения см. в определении типа события для получения.

Постоянные потребители событий можно создавать с помощью запросов опроса только в том случае, если у вас есть права администратора.