Bahasa
Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk menggunakan pemberitahuan kueri, konfigurasikan database Anda untuk mendukungnya dan berikan izin yang diperlukan kepada prinsipal database.
Untuk menggunakan pemberitahuan kueri, Anda harus:
Aktifkan pemberitahuan kueri untuk database Anda.
Pastikan bahwa ID pengguna yang digunakan untuk menyambungkan ke database memiliki izin yang diperlukan.
Gunakan SqlCommand untuk menjalankan pernyataan
SELECTyang valid dengan objek SqlNotificationRequest atau SqlDependency yang terkait.Berikan kode untuk memproses pemberitahuan jika data yang dipantau berubah.
Persyaratan Pemberitahuan Kueri
Pemberitahuan kueri hanya didukung untuk instruksi SELECT yang memenuhi daftar persyaratan tertentu. Tabel berikut ini menyediakan tautan ke Broker Layanan dan dokumentasi Pemberitahuan Kueri di dokumen SQL Server.
Dokumentasi SQL Server
Mengaktifkan Pemberitahuan Kueri untuk Menjalankan Kode Sampel
Untuk mengaktifkan Service Broker pada AdventureWorks database dengan menggunakan SQL Server Management Studio, jalankan pernyataan Transact-SQL berikut:
ALTER DATABASE AdventureWorks SET ENABLE_BROKER;
Agar sampel pemberitahuan kueri berjalan dengan benar, pernyataan Transact-SQL berikut harus dijalankan di server database.
CREATE QUEUE ContactChangeMessages;
CREATE SERVICE ContactChangeNotifications
ON QUEUE ContactChangeMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);
Izin Pemberitahuan Kueri
Berikan izin yang diperlukan kepada prinsipal database SUBSCRIBE QUERY NOTIFICATIONS dan Service Broker sesuai konfigurasi antrean Anda. Misalnya, ganti placeholder dengan pengguna database yang sudah ada:
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [<database_user>];
Modern .NET tidak mendukung code access security. Jangan gunakan SqlClientPermission.Demand untuk mengotorisasi pemberitahuan kueri; konfigurasikan izin database sebagai gantinya.
Memilih Objek Pemberitahuan
Dukungan pemberitahuan kueri menyediakan dua objek untuk memproses pemberitahuan: SqlDependency dan SqlNotificationRequest. Gunakan SqlDependency untuk menerima peristiwa perubahan dan menandai cache aplikasi Anda sebagai tidak valid. Gunakan SqlNotificationRequest saat Anda perlu mengimplementasikan pendengar pemberitahuan Anda sendiri.
Important
Jangan gunakan System.Data.SqlClient untuk pengembangan baru. Gunakan Microsoft.Data.SqlClient sebagai gantinya. Kelas ASP.NET Framework SqlCacheDependency memerlukan System.Data.SqlClient dan tidak berintegrasi dengan Microsoft.Data.SqlClient. Untuk aplikasi Microsoft.Data.SqlClient baru, tangani SqlDependency.OnChange dan perbarui cache melalui API cache aplikasi Anda.
Menggunakan SqlDependency
Untuk menggunakan SqlDependency, Service Broker harus diaktifkan untuk database SQL Server yang digunakan, dan pengguna harus memiliki izin untuk menerima pemberitahuan. Objek Service Broker, seperti antrean pemberitahuan, telah ditentukan sebelumnya.
Selain itu, SqlDependency secara otomatis meluncurkan thread pekerja untuk memproses pemberitahuan yang diposting ke antrean; ia juga mengurai pesan Service Broker dan menampilkan informasi sebagai data argumen acara.
SqlDependency harus diinisialisasi dengan memanggil Start metode untuk membuat dependensi ke database. Ini adalah metode statis yang perlu dipanggil hanya sekali selama inisialisasi aplikasi untuk setiap koneksi database yang diperlukan. Metode Stop harus dipanggil pada penghentian aplikasi untuk setiap koneksi dependensi yang dibuat.
Menggunakan SqlNotificationRequest
Sebaliknya, SqlNotificationRequest mengharuskan Anda untuk mengimplementasikan seluruh infrastruktur mendengarkan sendiri. Selain itu, semua objek Service Broker pendukung seperti antrean, layanan, dan jenis pesan yang didukung oleh antrean harus ditentukan. Pendekatan manual ini berguna jika aplikasi Anda memerlukan pesan pemberitahuan khusus atau perilaku pemberitahuan, atau jika aplikasi Anda adalah bagian dari aplikasi Service Broker yang lebih besar.