Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacje, które korzystają z powiadomień o zapytaniach, mają wspólny zestaw wymagań. Źródło danych musi być poprawnie skonfigurowane do obsługi powiadomień dotyczących zapytań SQL, a użytkownik musi mieć odpowiednie uprawnienia po stronie klienta i po stronie serwera.
Aby korzystać z powiadomień dotyczących zapytań, musisz:
- Włącz powiadomienia dotyczące zapytań dla bazy danych.
- Upewnij się, że identyfikator użytkownika używany do nawiązywania połączenia z bazą danych ma niezbędne uprawnienia.
- SqlCommand Użyj obiektu, aby wykonać prawidłową instrukcję SELECT ze skojarzonym obiektem powiadomienia — SqlDependency albo SqlNotificationRequest.
- Podaj kod, aby przetworzyć powiadomienie, jeśli monitorowane dane zmieniają się.
Wymagania dotyczące powiadomień dotyczących zapytań
Powiadomienia o zapytaniach są obsługiwane tylko w przypadku instrukcji SELECT, które spełniają listę określonych wymagań. Poniższa tabela zawiera linki do dokumentacji usługi Service Broker i powiadomień dotyczących zapytań w książkach programu SQL Server Online.
Dokumentacja programu SQL Server
- Tworzenie zapytania dla powiadomień
- Zagadnienia dotyczące zabezpieczeń brokera usług
- Zabezpieczenia i ochrona (Service Broker)
- Zagadnienia dotyczące zabezpieczeń usług powiadomień
- Sprawdzenie uprawnień do powiadomień
- Międzynarodowe rozważania dotyczące brokera usług
- Zagadnienia dotyczące projektowania rozwiązań (Service Broker)
- Service Broker Developer InfoCenter
- Przewodnik dla deweloperów (Service Broker)
Włączanie powiadomień o zapytaniach w celu uruchomienia przykładowego kodu
Aby włączyć usługę Service Broker w bazie danych AdventureWorks przy użyciu programu SQL Server Management Studio, wykonaj następującą instrukcję Transact-SQL:
ALTER DATABASE AdventureWorks SET ENABLE_BROKER;
Aby przykłady powiadomień działały poprawnie, następujące polecenia Transact-SQL muszą być wykonane na serwerze bazy danych.
CREATE QUEUE ContactChangeMessages;
CREATE SERVICE ContactChangeNotifications
ON QUEUE ContactChangeMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);
Uprawnienia dotyczące powiadomień zapytań
Użytkownicy, którzy wykonują polecenia żądające powiadomienia, muszą mieć uprawnienie do bazy danych POWIADOMIEŃ ZAPYTANIA SUBSKRYPCJI na serwerze.
Kod po stronie klienta uruchamiany w trybie częściowego zaufania wymaga SqlClientPermission.
Poniższy kod tworzy obiekt SqlClientPermission, ustawiając PermissionState na Unrestricted. Wymusi Demand to SecurityException w czasie wykonywania, jeśli wszystkie osoby wywołujące wyższe w stosie wywołań nie otrzymały uprawnień.
using Microsoft.Data.SqlClient;
using System.Security.Permissions;
class Program
{
static void Main()
{
}
// Code requires directives to
// System.Security.Permissions and
// Microsoft.Data.SqlClient
private bool CanRequestNotifications()
{
SqlClientPermission permission =
new SqlClientPermission(
PermissionState.Unrestricted);
try
{
permission.Demand();
return true;
}
catch (System.Exception)
{
return false;
}
}
}
Wybieranie obiektu powiadomienia
Interfejs API powiadomień o zapytaniach udostępnia dwa obiekty do przetwarzania powiadomień: SqlDependency i SqlNotificationRequest.
Korzystanie z programu SqlDependency
Aby można było używać SqlDependencyprogramu , należy włączyć usługę Service Broker dla używanej bazy danych programu SQL Server, a użytkownicy muszą mieć uprawnienia do odbierania powiadomień. Obiekty usługi Service Broker, takie jak kolejka powiadomień, są wstępnie zdefiniowane.
SqlDependency Ponadto automatycznie uruchamia wątek roboczy w celu przetwarzania powiadomień, gdy są umieszczane w kolejce. Analizuje również komunikat Service Broker, ujawniając informacje w postaci danych argumentu zdarzenia.
SqlDependency należy zainicjować przez wywołanie Start metody w celu ustanowienia zależności z bazą danych.
Start to metoda statyczna, która musi być wywoływana tylko raz podczas inicjowania aplikacji dla każdego wymaganego połączenia z bazą danych. Metodę Stop należy wywołać po zakończeniu działania aplikacji dla każdego utworzonego połączenia zależności.
Korzystanie z metody SqlNotificationRequest
Z kolei SqlNotificationRequest wymaga samodzielnego zaimplementowania całej infrastruktury nasłuchiwania. Ponadto należy zdefiniować wszystkie pomocnicze obiekty usługi Service Broker, takie jak kolejka, usługa i typy komunikatów obsługiwane przez kolejkę. Zastosowanie podejścia ręcznego jest przydatne, jeśli aplikacja wymaga specjalnych komunikatów lub zachowań dotyczących powiadomień, bądź jest częścią większej aplikacji Service Broker.