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 bildirimlerini kullanan uygulamaların ortak bir gereksinim kümesi vardır. Veri kaynağınızın SQL sorgu bildirimlerini destekleyecek şekilde doğru yapılandırılması ve kullanıcının doğru istemci tarafı ve sunucu tarafı izinlerine sahip olması gerekir.
Sorgu bildirimlerini kullanmak için:
Veritabanınız için sorgu bildirimlerini etkinleştirin.
Veritabanına bağlanmak için kullanılan kullanıcı kimliğinin gerekli izinlere sahip olduğundan emin olun.
Bir SqlCommand nesnesi kullanarak, ilişkili bir bildirim nesnesiyle (SqlDependency veya SqlNotificationRequest), geçerli bir SELECT deyimini yürütün.
İzlenen veriler değişirse bildirimi işlemek için kod sağlayın.
Sorgu Bildirimleri Gereksinimleri
Sorgu bildirimleri yalnızca belirli gereksinimlerin listesini karşılayan SELECT deyimleri için desteklenir. Aşağıdaki tabloda, SQL Server belgelerindeki Hizmet Aracısı ve Sorgu Bildirimleri belgelerine bağlantılar sağlanmaktadır.
SQL Server belgeleri
Hizmet Aracısı için GüvenlikLe İlgili Dikkat Edilmesi Gerekenler
Bildirim Hizmetleri için GüvenlikLe İlgili Dikkat Edilmesi Gerekenler
Çözüm Tasarımında Dikkat Edilmesi Gerekenler (Hizmet Aracısı)
Örnek Kod Çalıştırmak için Sorgu Bildirimlerini Etkinleştirme
SQL Server Management Studio kullanarak AdventureWorks veritabanında Hizmet Aracısı'nı etkinleştirmek için aşağıdaki Transact-SQL deyimini yürütür:
ALTER DATABASE AdventureWorks SET ENABLE_BROKER;
Sorgu bildirim örneklerinin doğru çalışması için aşağıdaki Transact-SQL deyimlerinin veritabanı sunucusunda yürütülmesi gerekir.
CREATE QUEUE ContactChangeMessages;
CREATE SERVICE ContactChangeNotifications
ON QUEUE ContactChangeMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);
Sorgu Bildirimleri İzinleri
Bildirim isteyen komutları yürüten kullanıcıların sunucuda SUBSCRIBE QUERY NOTIFICATIONS veritabanı izni olmalıdır.
Kısmi bir güven durumunda çalışan istemci tarafı kodu için SqlClientPermission gereklidir.
Aşağıdaki kod, SqlClientPermission olarak PermissionState ayarlayan bir Unrestricted nesnesi oluşturur. Demand çağrı yığınında daha yukarıda olan tüm çağrıcılara izin verilmemişse, çalışma zamanında bir SecurityException zorlar.
// Code requires directives to
// System.Security.Permissions and
// System.Data.SqlClient
private bool CanRequestNotifications()
{
SqlClientPermission permission =
new SqlClientPermission(
PermissionState.Unrestricted);
try
{
permission.Demand();
return true;
}
catch (System.Exception)
{
return false;
}
}
' Code requires directives to
' System.Security.Permissions and
' System.Data.SqlClient
Private Function CanRequestNotifications() As Boolean
Dim permission As New SqlClientPermission( _
PermissionState.Unrestricted)
Try
permission.Demand()
Return True
Catch ex As Exception
Return False
End Try
End Function
Bildirim Nesnesi Seçme
Sorgu bildirimleri API'sinde bildirimleri işlemek için iki nesne sağlanır: SqlDependency ve SqlNotificationRequest. Genel olarak, ASP.NET olmayan uygulamaların çoğu SqlDependency nesnesini kullanmalıdır. ASP.NET uygulamaları, bildirim ve önbellek nesnelerini yönetmek için bir çerçeve sağlayan ve SqlCacheDependency öğesini saran üst düzey SqlDependency öğesini kullanmalıdır.
SqlDependency kullanma
SqlDependency'yi kullanmak için, kullanılmakta olan SQL Server veritabanı için Hizmet Aracısı'nın etkinleştirilmesi gerekir ve kullanıcıların bildirim alma izinlerine sahip olması gerekir. Bildirim kuyruğu gibi Hizmet Aracısı nesneleri önceden tanımlanmıştır.
Ayrıca, SqlDependency bildirimleri kuyruğa gönderildiğinde işlemek için otomatik olarak bir çalışan iş parçacığı başlatır; ayrıca Hizmet Aracısı iletisini ayrıştırarak bilgileri olay argümanı verisi olarak gösterir.
SqlDependency öğesi, veritabanına bağımlılık kurmak için Start yöntemini çağırarak başlatılmalıdır. Bu, gerekli her veritabanı bağlantısı için uygulama başlatma sırasında yalnızca bir kez çağrılması gereken statik bir yöntemdir. Her bir oluşturulan bağımlılık bağlantısı için Stop yöntemi uygulama sonlandırma sırasında çağrılmalıdır.
SqlNotificationRequest'i Kullanma
Buna karşılık, SqlNotificationRequest dinleme altyapısının tamamını kendiniz uygulamanızı gerektirir. Ayrıca kuyruk, hizmet ve kuyruk tarafından desteklenen ileti türleri gibi tüm destekleyici Hizmet Aracısı nesneleri tanımlanmalıdır. Bu el ile yaklaşım, uygulamanız özel bildirim iletileri veya bildirim davranışları gerektiriyorsa veya uygulamanız daha büyük bir Hizmet Aracısı uygulamasının parçasıysa kullanışlıdır.