Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sorgu SqlDependency sonuçlarının başlangıçta alınanlardan ne zaman farklı olduğunu algılamak için bir SqlCommand nesnesi ile ilişkilendirilebilir. Ayrıca, ilişkili bir komut için sonuçlar değiştiğinde OnChange tetiklenecek olaya bir temsilci de atayabilirsiniz. komutunu yürütmeden önce komutuyla ilişkilendirmeniz SqlDependency gerekir.
HasChanges özelliğiSqlDependency, veriler ilk alındığından bu yana sorgu sonuçlarının değişip değişmediğini belirlemek için de kullanılabilir.
Güvenlikle İlgili Dikkat Edilmesi Gerekenler
Bağımlılık altyapısı, belirli bir SqlConnection komut için temel alınan verilerin değiştiğine ilişkin bildirimler almak için çağrıldığında Start açılan bir altyapıya dayanır. bir istemcinin çağrısı SqlDependency.Start başlatma özelliği, ve kod erişimi güvenlik özniteliklerinin kullanımıyla SqlClientPermission denetlenir. Daha fazla bilgi için bkz . Sorgu Bildirimlerini etkinleştirme ve Kod Erişimi Güvenliği ve ADO.NET.
Örnek
Aşağıdaki adımlarda bağımlılık bildirme, komut yürütme ve sonuç kümesi değiştiğinde bildirim alma adımları gösterilmektedir:
Sunucuya bir
SqlDependencybağlantı başlatın.Sunucuya bağlanmak ve transact-SQL deyimi tanımlamak için ve SqlConnection nesneleri oluşturunSqlCommand.
Yeni
SqlDependencybir nesne oluşturun veya var olan bir nesneyi kullanın ve nesneyeSqlCommandbağlayın. Dahili olarak, bu bir SqlNotificationRequest nesne oluşturur ve gerektiğinde bunu komut nesnesine bağlar. Bu bildirim isteği, buSqlDependencynesneyi benzersiz olarak tanımlayan bir iç tanımlayıcı içerir. Zaten etkin değilse istemci dinleyicisini de başlatır.Nesnenin
OnChangeolayına bir olay işleyicisi abone olunSqlDependency.nesnesinin yöntemlerinden herhangi birini
Executekullanarak komutunu yürütürSqlCommand. Komut bildirim nesnesine bağlı olduğundan, sunucu bir bildirim oluşturması gerektiğini algılar ve kuyruk bilgileri bağımlılıklar kuyruğuna işaret eder.Sunucu bağlantısını
SqlDependencydurdurun.
Herhangi bir kullanıcı daha sonra temel alınan verileri değiştirirse, Microsoft SQL Server bu tür bir değişiklik için bekleyen bir bildirim olduğunu algılar ve çağrılarak SqlConnectionoluşturulan temel SqlDependency.Start alınan aracılığıyla işlenen ve istemciye iletilen bir bildirim gönderir. İstemci dinleyicisi geçersizleştirme iletisini alır. İstemci dinleyici daha sonra ilişkili SqlDependency nesneyi bulur ve olayı başlatır OnChange .
Aşağıdaki kod parçası, örnek uygulama oluşturmak için kullanacağınız tasarım desenini gösterir.
Sub Initialization()
' Create a dependency connection.
SqlDependency.Start(connectionString, queueName)
End Sub
Sub SomeMethod()
' Assume connection is an open SqlConnection.
' Create a new SqlCommand object.
Using command As New SqlCommand( _
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", _
connection)
' Create a dependency and associate it with the SqlCommand.
Dim dependency As New SqlDependency(command)
' Maintain the reference in a class member.
' Subscribe to the SqlDependency event.
AddHandler dependency.OnChange, AddressOf OnDependencyChange
' Execute the command.
Using reader = command.ExecuteReader()
' Process the DataReader.
End Using
End Using
End Sub
' Handler method
Sub OnDependencyChange(ByVal sender As Object, _
ByVal e As SqlNotificationEventArgs)
' Handle the event (for example, invalidate this cache entry).
End Sub
Sub Termination()
' Release the dependency
SqlDependency.Stop(connectionString, queueName)
End Sub
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);
}