Pernyataan SELECT untuk Kueri Peristiwa
Anda bisa menggunakan berbagai pernyataan SELECT untuk mengkueri informasi peristiwa. Pernyataan bisa menjadi pernyataan dasar atau bisa lebih ketat untuk mempersempit kumpulan hasil yang dikembalikan dari kueri.
Contoh berikut adalah pernyataan SELECT dasar yang digunakan untuk mengkueri informasi peristiwa.
SELECT * FROM EventClass
Saat konsumen mengirimkan kueri, ini adalah permintaan untuk diberi tahu tentang semua kemunculan peristiwa yang diwakili oleh EventClass. Permintaan ini mencakup permintaan pemberitahuan tentang semua sistem peristiwa dan properti nonsystem. Saat penyedia peristiwa mengirimkan kueri, penyedia kejadian mendaftarkan dukungan untuk menghasilkan pemberitahuan saat peristiwa yang diwakili oleh EventClass terjadi.
Konsumen dapat menentukan properti individual alih-alih tanda bintang (*) dalam pernyataan SELECT.
Contoh berikut menunjukkan cara mengkueri properti tertentu.
SELECT property_1, property_2, property_3 FROM MyEventClass
Namun, semua properti objek yang disematkan dikembalikan, bahkan jika kueri menentukan properti objek yang disematkan.
Contoh berikut menunjukkan dua kueri yang mengembalikan data yang sama.
SELECT targetInstance FROM __InstanceCreationEvent within 2
WHERE targetinstance isa "Win32_Process"
SELECT targetInstance.Name FROM __InstanceCreationEvent within 2
WHERE targetinstance isa "Win32_Process"
Jika properti sistem tidak relevan untuk kueri tertentu, properti tersebut berisi NULL. Misalnya, nilai properti sistem __RELPATH adalah NULL untuk semua kueri peristiwa.
Properti sistem berikut berisi NULL untuk kueri peristiwa:
- \_\_Namespace \_\_Path \_\_RelPath \_\_Server
Untuk informasi selengkapnya, lihat Referensi Properti Sistem WMI.
Semua kueri peristiwa dapat menyertakan klausa WHERE opsional, tetapi klausa WHERE terutama digunakan oleh konsumen untuk menentukan pemfilteran tambahan. Sangat disarankan agar konsumen selalu menentukan klausul WHERE. Biaya kueri yang kompleks minimal dibandingkan dengan biaya pengiriman dan pemrosesan pemberitahuan yang tidak diperlukan.
Contoh berikut menunjukkan kueri yang meminta pemberitahuan semua peristiwa modifikasi instans yang memengaruhi kelas hipotetis EmailEvent.
SELECT * FROM EmailEvent
Jika peristiwa yang terkait dengan EmailEvent sering terjadi, konsumen dibanjiri peristiwa. Kueri yang lebih baik meminta peristiwa hanya ketika kondisi tertentu menggunakan properti kelas yang ditentukan, seperti ketika tingkat kepentingan tinggi.
Contoh berikut menunjukkan kueri yang bisa Anda gunakan jika EmailImportance adalah properti dari kelas EmailEvent.
SELECT * FROM EmailEvent WHERE EmailImportance > 3
Perhatikan bahwa WMI dapat menolak kueri karena sejumlah alasan. Misalnya, kueri bisa terlalu kompleks atau intensif sumber daya untuk evaluasi. Ketika ini terjadi, WMI mengembalikan kode kesalahan tertentu, seperti WBEM_E_INVALID_QUERY.
Properti objek yang disematkan dapat digunakan dalam klausa WHERE.
Contoh berikut menunjukkan cara mengkueri objek di mana properti TargetInstance dari kelas sistem __InstanceModificationEvent adalah objek Win32_LogicalDisk yang disematkan dan FreeSpace adalah properti Win32_LogicalDisk.
SELECT * FROM __InstanceModificationEvent WITHIN 600
WHERE TargetInstance ISA "Win32_LogicalDisk"
AND TargetInstance.FreeSpace < 1000000