Dela via


WITHIN-sats

Händelsekonsumenter använder WITHIN-satsen i händelsefrågor för att ange ett avsökningsintervall eller ett grupperingsintervall.

Ett avsökningsintervall är det intervall som Windows Management Instrumentation (WMI) använder för att avsöka dataprovidern som ansvarar för klassen för inbyggda händelser, där händelsen som efterfrågas är medlem. Det här intervallet är den maximala tid som kan passera innan meddelandet om en händelse måste levereras. En konsument använder ett avsökningsintervall i en WITHIN-sats när konsumenten kräver meddelande om ändringar i en klass och en händelseprovider inte är tillgänglig. Konsumenten registrerar sig för en inbyggd händelse och inkluderar avsökningsintervallet.

Om du vill ange ett avsökningsintervall placerar du WITHIN-satsen omedelbart före WHERE-satsen enligt följande:

SELECT * FROM IntrinsicEventClass WITHIN interval  WHERE property = value

IntrinsicEventClass är den inbyggda händelseklass som händelsen är medlem i, intervall är avsökningsintervallet och värdet är värdet för den egenskap som konsumenten kräver meddelande om.

Avsökningsintervallet är ett flyttalsnummer och kan vara bråktal för att acceptera värden som är mindre än 1 sekund. Intervallet bör dock representera ett antal sekunder i stället för ett extremt litet värde, till exempel 0,001, eftersom om du anger ett värde som är för litet kan WMI avvisa instruktionen som ogiltig på grund av avsökningens resursintensiva karaktär. Eftersom de flesta händelsekonsumenter inte kräver omedelbar avisering rekommenderar vi att de använder ett intervall som är större än 5 minuter.

Följande frågeexempel begär att WMI kontrollerar var 10:e sekund efter ändringar som inträffar i instanser av klassen Win32_LogicalDisk. Om en instans av klassen ändras inom det angivna avsökningsintervallet skickas en meddelandehändelse för varje ändring.

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

Beroende på frågan kan en händelseprovider och WMI dela uppgiften att tillhandahålla händelser. Till exempel en händelseprovider som stöder händelser i __InstanceCreationEvent- och __InstanceModificationEvent-systemklasserna, och inte händelser i __InstanceDeletionEvent-systemklassen. Följande fråga gör det möjligt för händelseprovidern att generera skapande- och ändringshändelserna när de inträffar och få dem levererade när de skapas. Frågan gör också att WMI kan generera __InstanceDeletionEvent händelser var 10:e (tio) sekund med hjälp av avsökningsmekanismen.

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

Du kan också använda WITHIN-satsen för att ange ett grupperingsintervall. Ett grupperingsintervall är ett osignerat 32-bitars heltal som anger tidsperioden, efter att ha fått en inledande händelse, under vilken WMI ska samla in liknande händelser. När den här tidsperioden går ut levererar WMI den aggregerade händelsen, som består av alla liknande händelser. Mer information finns i GROUP-satsen.

Händelsekonsumenter som registrerar sig för händelser som ofta inträffar använder ett grupperingsintervall med WITHIN-satsen. Om du lägger till GROUP WITHIN i WHERE-satsen i en händelsefråga skickas en aggregerad händelse i stället för många händelser. Aggregeringshändelsen representeras av __AggregateEvent-systemklassen.

Om du vill ange ett grupperingsintervall placerar du WITHIN-satsen omedelbart efter GROUP-satsen.

SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval

EventClass är händelseklassen som händelsen är medlem i, värdet är värdet för den egenskap som konsumenten behöver meddelande om och Intervall är grupperingsintervallet.

Mer information finns i Fastställa vilken typ av händelse som ska ta emot.

Användare av permanenta händelser kan bara skapas med avsökningsfrågor om du har administratörsbehörighet.