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.
Objek SqlDependency dapat dikaitkan dengan SqlCommand untuk dideteksi saat hasil kueri berbeda dari hasil yang awalnya diambil. Anda juga dapat menetapkan delegasi ke peristiwa OnChange, yang akan diaktifkan saat hasilnya berubah untuk perintah terkait. SqlDependency Kaitkan dengan perintah sebelum Anda menjalankan perintah. Properti HasChanges dari SqlDependency juga dapat digunakan untuk menentukan apakah hasil kueri telah berubah sejak data pertama kali diambil.
Pertimbangan keamanan
Infrastruktur dependensi bergantung pada SqlConnection yang dibuka ketika Start dipanggil untuk menerima pemberitahuan bahwa data yang mendasar telah berubah untuk perintah tertentu. Kemampuan klien untuk memulai panggilan SqlDependency.Start dikontrol dengan menggunakan SqlClientPermission dan mengodekan atribut keamanan akses. Untuk informasi selengkapnya, lihat Mengaktifkan pemberitahuan kueri.
Contoh
Langkah-langkah berikut mengilustrasikan cara mendeklarasikan dependensi, menjalankan perintah, dan menerima pemberitahuan saat kumpulan hasil berubah:
Memulai koneksi
SqlDependencyke server.Buat objek SqlConnection dan SqlCommand untuk terhubung ke server dan tentukan pernyataan Transact-SQL.
Buat objek
SqlDependencybaru, atau gunakan yang sudah ada, dan ikat ke objekSqlCommand. Secara internal, asosiasi ini membuat SqlNotificationRequest objek dan mengikatnya ke objek perintah sesuai kebutuhan. Permintaan pemberitahuan ini berisi pengenal internal yang secara unik mengidentifikasi objekSqlDependencyini. Ini juga memulai pendengar klien jika belum aktif.Berlangganan penanganan aktivitas ke peristiwa
OnChangeuntuk objekSqlDependency.Jalankan perintah menggunakan salah satu metode
Executedari objekSqlCommand. Karena perintah terikat ke objek pemberitahuan, server mengenali bahwa ia harus membuat pemberitahuan, dan informasi antrean akan mengarah ke antrean dependensi.Hentikan koneksi
SqlDependencyke server.
Jika ada pengguna yang kemudian mengubah data yang mendasar, Microsoft SQL Server mendeteksi bahwa ada pemberitahuan yang tertunda untuk perubahan tersebut, dan memposting pemberitahuan yang diproses dan diteruskan ke klien melalui yang mendasar SqlConnection yang dibuat dengan memanggil SqlDependency.Start. Pendengar klien menerima pesan pembatalan. Pendengar klien kemudian menemukan objek SqlDependency terkait dan mengaktifkan peristiwa OnChange.
Fragmen kode berikut menunjukkan pola desain yang akan Anda gunakan untuk membuat aplikasi sampel.
void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}
void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
using (SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers",
connection))
{
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency=new SqlDependency(command);
// Maintain the reference in a class member.
// Subscribe to the SqlDependency event.
dependency.OnChange+=new
OnChangeEventHandler(OnDependencyChange);
// Execute the command.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}
// Handler method
void OnDependencyChange(object sender,
SqlNotificationEventArgs e )
{
// Handle the event (for example, invalidate this cache entry).
}
void Termination()
{
// Release the dependency.
SqlDependency.Stop(connectionString, queueName);
}