Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Można SqlCommand skonfigurować do generowania powiadomienia, gdy dane zmieniają się po pobraniu z serwera, a zestaw wyników będzie inny, jeśli zapytanie zostało wykonane ponownie. Jest to przydatne w scenariuszach, w których chcesz używać niestandardowych kolejek powiadomień na serwerze lub gdy nie chcesz obsługiwać obiektów na żywo.
Tworzenie żądania powiadomienia
Możesz użyć obiektu SqlNotificationRequest do utworzenia żądania powiadomienia, wiążąc go z obiektem SqlCommand. Po utworzeniu żądania nie potrzebujesz obiektu już SqlNotificationRequest. Można pytać o kolejkę pod kątem wszelkich powiadomień i zareagować odpowiednio. Powiadomienia mogą wystąpić nawet wtedy, gdy aplikacja zostanie zamknięta, a następnie ponownie uruchomiona.
Po wykonaniu polecenia ze skojarzonym powiadomieniem, wszelkie zmiany w oryginalnym zestawie wyników inicjują wysłanie komunikatu do kolejki SQL Server, która została skonfigurowana w żądaniu powiadomień.
Sposób sondowania kolejki programu SQL Server i interpretowania komunikatu jest specyficzny dla aplikacji. Aplikacja jest odpowiedzialna za sondowanie kolejki i reagowanie na podstawie zawartości komunikatu.
Uwaga / Notatka
W przypadku używania żądań powiadomień programu SQL Server z SqlDependency, utwórz własną nazwę kolejki zamiast używania domyślnej nazwy usługi.
Brak nowych elementów zabezpieczeń po stronie klienta dla programu SqlNotificationRequest. Jest to przede wszystkim funkcja serwera, a serwer utworzył specjalne uprawnienia, które użytkownicy muszą posiadać, aby zażądać powiadomienia.
Przykład
Poniższy fragment kodu pokazuje, jak utworzyć element SqlNotificationRequest i skojarzyć go z elementem SqlCommand.
' Assume connection is an open SqlConnection.
' Create a new SqlCommand object.
Dim command As New SqlCommand( _
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", connection)
' Create a SqlNotificationRequest object.
Dim notificationRequest As New SqlNotificationRequest()
notificationRequest.id = "NotificationID"
notificationRequest.Service = "mySSBQueue"
' Associate the notification request with the command.
command.Notification = notificationRequest
' Execute the command.
command.ExecuteReader()
' Process the DataReader.
' You can use Transact-SQL syntax to periodically poll the
' SQL Server queue to see if you have a new message.
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", connection);
// Create a SqlNotificationRequest object.
SqlNotificationRequest notificationRequest=new SqlNotificationRequest();
notificationRequest.id="NotificationID";
notificationRequest.Service="mySSBQueue";
// Associate the notification request with the command.
command.Notification=notificationRequest;
// Execute the command.
command.ExecuteReader();
// Process the DataReader.
// You can use Transact-SQL syntax to periodically poll the
// SQL Server queue to see if you have a new message.