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

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

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

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

SELECT * FROM IntrinsicEventClass WITHIN interval  WHERE property = value

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

Интервал опроса является числом с плавающей запятой и может быть дробным, чтобы принимать значения меньше 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 WITHIN в предложение WHERE в запросе события приводит к отправке WMI одного статистического события, а не нескольких событий. Агрегатное событие представлено системным классом __AggregateEvent.

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

SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval

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

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

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