Предложение 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 — это класс событий, в котором событие является членом, значением является значение свойства, для которого потребитель требует уведомления, и интервал группирования.
Дополнительные сведения см. в определении типа события для получения.
Постоянные потребители событий можно создавать с помощью запросов опроса только в том случае, если у вас есть права администратора.