Delen via


SELECT-instructie voor gebeurtenisquery's

U kunt verschillende SELECT-instructies gebruiken om een query uit te voeren op gebeurtenisgegevens. De instructies kunnen basisinstructies zijn of kunnen meer beperkend zijn om de resultatenset te beperken die wordt geretourneerd uit de query.

Het volgende voorbeeld is een eenvoudige SELECT-instructie die wordt gebruikt om een query uit te voeren op gebeurtenisgegevens.

SELECT * FROM EventClass

Wanneer een consument een query indient, is het een verzoek om op de hoogte te worden gesteld van alle gebeurtenissen van de gebeurtenis die wordt vertegenwoordigd door EventClass. Deze aanvraag bevat een aanvraag voor meldingen over alle gebeurtenissysteem- en niet-systeemeigenschappen. Wanneer een gebeurtenisprovider een query verzendt, wordt er ondersteuning geregistreerd voor het genereren van meldingen wanneer een gebeurtenis die wordt vertegenwoordigd door EventClass- plaatsvindt.

Consumenten kunnen afzonderlijke eigenschappen opgeven in plaats van het sterretje (*) in de SELECT-instructie.

In het volgende voorbeeld ziet u hoe u query's kunt uitvoeren op specifieke eigenschappen.

SELECT property_1, property_2, property_3 FROM MyEventClass

Alle eigenschappen van een ingesloten object worden echter geretourneerd, zelfs als de query ingesloten objecteigenschappen opgeeft.

In het volgende voorbeeld ziet u twee query's die dezelfde gegevens retourneren.

SELECT targetInstance FROM __InstanceCreationEvent within 2
    WHERE targetinstance isa "Win32_Process"
SELECT targetInstance.Name FROM __InstanceCreationEvent within 2
    WHERE targetinstance isa "Win32_Process"

Als een systeemeigenschap niet relevant is voor een specifieke query, bevat deze NULL-. De waarde van de systeemeigenschap __RELPATH is bijvoorbeeld NULL- voor alle gebeurtenisquery's.

De volgende systeemeigenschappen bevatten NULL- voor gebeurtenisquery's:

\_\_Namespace \_\_Path \_\_RelPath \_\_Server

Zie WMI System Property Referencevoor meer informatie.

Alle gebeurtenisquery's kunnen een optionele WHERE-componentbevatten, maar WHERE-componenten worden voornamelijk gebruikt door consumenten om extra filters op te geven. Het wordt sterk aanbevolen dat consumenten altijd een WHERE-component opgeven. De kosten van een complexe query zijn minimaal vergeleken met de kosten voor het leveren en verwerken van overbodige meldingen.

In het volgende voorbeeld ziet u een query waarin meldingen worden aangevraagd van alle gebeurtenissen voor het wijzigen van exemplaren die van invloed zijn op de hypothetische klasse EmailEvent.

SELECT * FROM EmailEvent

Als gebeurtenissen die zijn gekoppeld aan EmailEvent vaak optreden, wordt de consument overspoeld met gebeurtenissen. Een betere query vraagt alleen gebeurtenissen aan wanneer specifieke voorwaarden eigenschappen van de opgegeven klasse gebruiken, zoals wanneer het urgentieniveau hoog is.

In het volgende voorbeeld ziet u de query die u kunt gebruiken als EmailImportance een eigenschap is van de klasse EmailEvent.

SELECT * FROM EmailEvent WHERE EmailImportance > 3

WMI kan een query om een aantal redenen weigeren. De query kan bijvoorbeeld te complex of resource-intensief zijn voor evaluatie. Wanneer dit gebeurt, retourneert WMI specifieke foutcodes, zoals WBEM_E_INVALID_QUERY.

Eigenschappen van ingesloten objecten kunnen worden gebruikt in de WHERE-component.

In het volgende voorbeeld ziet u hoe u query's kunt uitvoeren op objecten waarbij de eigenschap TargetInstance van de systeemklasse van __InstanceModificationEvent een ingesloten Win32_LogicalDisk-object is en FreeSpace een eigenschap van Win32_LogicalDiskis.

SELECT * FROM __InstanceModificationEvent WITHIN 600
    WHERE TargetInstance ISA "Win32_LogicalDisk" 
    AND   TargetInstance.FreeSpace < 1000000