Bagikan melalui


Memahami Penyedia WMI untuk Peristiwa Server

Berlaku untuk:SQL Server

Penyedia WMI untuk Peristiwa Server memungkinkan Anda menggunakan Instrumentasi Manajemen Windows (WMI) untuk memantau peristiwa di SQL Server. Penyedia bekerja dengan mengubah SQL Server menjadi objek WMI terkelola. Setiap peristiwa yang dapat menghasilkan pemberitahuan peristiwa di SQL Server dapat dimanfaatkan oleh WMI dengan menggunakan penyedia ini. Selain itu, sebagai aplikasi manajemen yang berinteraksi dengan WMI, SQL Server Agent dapat menanggapi peristiwa ini, meningkatkan cakupan peristiwa yang dicakup oleh SQL Server Agent melalui rilis sebelumnya.

Aplikasi manajemen seperti SQL Server Agent dapat mengakses peristiwa SQL Server menggunakan Penyedia WMI untuk Peristiwa Server dengan mengeluarkan pernyataan WMI Query Language (WQL). WQL adalah subset sederhana dari bahasa kueri terstruktur (SQL), dengan beberapa ekstensi khusus WMI. Dalam menggunakan WQL, aplikasi mengambil jenis peristiwa terhadap database atau objek database tertentu. Penyedia WMI untuk Peristiwa Server menerjemahkan kueri ke dalam pemberitahuan peristiwa, secara efektif membuat pemberitahuan peristiwa di database target. Untuk informasi selengkapnya tentang cara kerja pemberitahuan peristiwa di SQL Server, lihat Konsep Penyedia WMI untuk Peristiwa Server. Peristiwa yang dapat dikueri tercantum di penyedia WMI untuk kelas dan properti Peristiwa Server.

Ketika peristiwa terjadi yang memicu pemberitahuan peristiwa untuk mengirim pesan, pesan masuk ke layanan target yang telah ditentukan sebelumnya di msdb yang bernama SQL/Notifications/ProcessWMIEventProviderNotification/v1.0. Layanan ini menempatkan peristiwa ke dalam antrean yang telah ditentukan sebelumnya dalam msdb yang diberi nama WMIEventProviderNotificationQueue. (Layanan dan antrean dibuat secara dinamis oleh penyedia ketika pertama kali terhubung ke SQL Server.) Penyedia kemudian membaca data peristiwa dari antrean ini dan mengubahnya menjadi format objek terkelola (MOF) sebelum mengembalikannya ke aplikasi. Ilustrasi berikut menunjukkan proses ini.

Flow diagram of the WMI Provider for Server Events.

Misalnya, pertimbangkan Kueri WQL berikut:

SELECT * FROM DDL_DATABASE_LEVEL_EVENTS
WHERE DatabaseName = 'AdventureWorks2022';

Sebagai respons terhadap kueri ini, Penyedia WMI untuk Peristiwa Server membuat pemberitahuan peristiwa yang setara dalam database target:

USE AdventureWorks2022;
GO
CREATE EVENT NOTIFICATION SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
    ON DATABASE
    WITH FAN_IN
    FOR DDL_DATABASE_LEVEL_EVENTS
    TO SERVICE
        'SQL/Notifications/ProcessWMIEventProviderNotification/v1.0',
        'A7E5521A-1CA6-4741-865D-826F804E5135';
GO

Dalam contoh ini, SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9 adalah pengidentifikasi Transact-SQL yang terdiri dari awalan SQLWEP_ dan GUID. SQLWEP membuat GUID baru untuk setiap pengidentifikasi. Nilai A7E5521A-1CA6-4741-865D-826F804E5135 dalam TO SERVICE klausul adalah GUID yang mengidentifikasi instans broker dalam msdb database.

Untuk informasi selengkapnya tentang cara bekerja dengan WQL, lihat Menggunakan WQL dengan Penyedia WMI untuk Peristiwa Server.

Aplikasi manajemen mengarahkan Penyedia WMI untuk Peristiwa Server ke instans SQL Server dengan menyambungkan ke namespace layanan WMI yang ditentukan oleh penyedia. Layanan Windows WMI memetakan namespace layanan ini ke DLL penyedia, sqlwep.dll, dan memuatnya ke dalam memori. Penyedia mengelola namespace layanan WMI untuk Peristiwa Server untuk setiap instans SQL Server, dan formatnya adalah \\.\<root>\Microsoft\SqlServer\ServerEvents\<instance_name>, di mana <instance_name> default ke MSSQLSERVER. Untuk informasi selengkapnya tentang cara menyambungkan ke namespace layanan WMI untuk instans SQL Server, lihat Menggunakan WQL dengan Penyedia WMI untuk Peristiwa Server.

DLL penyedia, sqlwep.dll, hanya dimuat satu kali ke layanan host WMI dari sistem operasi server, terlepas dari berapa banyak instans SQL Server di server.

Untuk contoh aplikasi manajemen SQL Server Agent yang menggunakan Penyedia WMI untuk Peristiwa Server, lihat Sampel: Membuat Pemberitahuan Agen SQL Server dengan Penyedia WMI. Untuk contoh aplikasi manajemen yang menggunakan Penyedia WMI untuk Peristiwa Server dalam kode terkelola, lihat Sampel: Menggunakan Penyedia Peristiwa WMI dengan .NET Framework. Informasi selengkapnya juga tersedia tentang WMI di Microsoft .NET Framework SDK.