Klausul WITHIN
Konsumen peristiwa menggunakan klausul WITHIN dalam kueri peristiwa untuk menentukan interval polling atau interval pengelompokan.
Interval polling adalah interval yang digunakan Windows Management Instrumentation (WMI) untuk melakukan polling penyedia data yang bertanggung jawab atas kelas untuk peristiwa intrinsik, di mana peristiwa yang dikueri adalah anggota. Interval ini adalah jumlah waktu maksimum yang dapat berlalu sebelum pemberitahuan peristiwa harus dikirimkan. Konsumen menggunakan interval polling dalam klausul WITHIN ketika konsumen memerlukan pemberitahuan perubahan pada kelas, dan penyedia peristiwa tidak tersedia. Konsumen mendaftar untuk peristiwa intrinsik dan mencakup interval polling.
Untuk menentukan interval polling, letakkan klausul WITHIN tepat sebelum klausa WHERE, seperti yang ditunjukkan berikut:
SELECT * FROM IntrinsicEventClass WITHIN interval WHERE property = value
IntrinsicEventClass adalah kelas peristiwa intrinsik di mana peristiwa tersebut adalah anggota, interval adalah interval polling, dan nilai adalah nilai untuk properti tempat konsumen memerlukan pemberitahuan.
Interval polling adalah angka floating-point, dan dapat menjadi pecahan untuk menerima nilai yang lebih kecil dari 1 detik. Namun, interval harus mewakili sejumlah detik daripada nilai yang sangat kecil seperti 0,001, karena menentukan nilai yang terlalu kecil dapat menyebabkan WMI menolak pernyataan sebagai tidak valid—karena sifat polling yang intensif sumber daya. Karena sebagian besar konsumen peristiwa tidak memerlukan pemberitahuan segera, disarankan agar mereka menggunakan interval yang lebih besar dari 5 menit.
Contoh kueri berikut meminta WMI memeriksa setiap 10 detik untuk perubahan yang terjadi pada instans kelas Win32_LogicalDisk . Jika instans kelas dimodifikasi dalam interval polling yang ditentukan, peristiwa pemberitahuan dikirim untuk setiap modifikasi.
SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE TargetInstance ISA "Win32_LogicalDisk"
Bergantung pada kueri, penyedia peristiwa dan WMI dapat berbagi tugas menyediakan peristiwa. Misalnya, penyedia peristiwa yang mendukung peristiwa kelas sistem __InstanceCreationEvent dan __InstanceModificationEvent , dan bukan peristiwa kelas sistem __InstanceDeletionEvent . Kueri berikut memungkinkan penyedia peristiwa untuk menghasilkan peristiwa pembuatan dan modifikasi saat terjadi dan mengirimkannya saat dibuat. Kueri ini juga memungkinkan WMI untuk menghasilkan peristiwa __InstanceDeletionEvent setiap 10 (sepuluh) detik menggunakan mekanisme polling.
SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE TargetInstance ISA "MyOwnClass"
Anda juga dapat menggunakan klausa WITHIN untuk menentukan interval pengelompokan. Interval pengelompokan adalah bilangan bulat 32-bit yang tidak ditandatangani yang menentukan periode waktu, setelah menerima peristiwa awal, di mana WMI harus mengumpulkan peristiwa serupa. Ketika periode waktu ini kedaluwarsa, WMI memberikan peristiwa agregat, yang terdiri dari semua peristiwa serupa. Untuk informasi selengkapnya, lihat Klausul GROUP.
Konsumen peristiwa yang mendaftar untuk peristiwa yang sering terjadi menggunakan interval pengelompokan dengan klausa WITHIN. Menambahkan GROUP WITHIN ke klausa WHERE dalam kueri peristiwa menghasilkan WMI mengirim satu peristiwa agregat daripada banyak peristiwa. Peristiwa agregat diwakili oleh kelas sistem __AggregateEvent .
Untuk menentukan interval pengelompokan, tempatkan klausa WITHIN segera setelah klausa GROUP.
SELECT * FROM EventClass WHERE property = value GROUP WITHIN Interval
EventClass adalah kelas peristiwa di mana peristiwa tersebut adalah anggota, nilai adalah nilai untuk properti tempat konsumen memerlukan pemberitahuan, dan Interval adalah interval pengelompokan.
Untuk informasi selengkapnya, lihat Menentukan Jenis Peristiwa yang Akan Diterima.
Konsumen peristiwa permanen dapat dibuat dengan kueri polling hanya jika Anda memiliki hak istimewa administrator.