Creating Query Notification Subscriptions
Subskrybowanie powiadomienie polega na tworzeniu polecenia, dołączanie żądanie powiadomienia do polecenia i następnie wykonywanie polecenia.Query notification subscriptions must be created from a database access interface.Transact-SQL does not provide a mechanism for creating query notification subscriptions.
The Database Engine immediately registers the powiadomienie for the Transact-SQL instrukcja in the command. Dla każdej instrukcja, które nie spełniają wymagania dotyczące powiadomienie kwerendy Database Engine natychmiast tworzy powiadomienie. Dla instrukcji, które spełniają wymagania tworzony jest subskrypcja.Należy uważać, aby uniknąć wysyłania polecenia do serwera, który zawiera zarówno instrukcji, które spełniają wymagania i instrukcji, które nie spełniają wymagań obu.
Uwaga
Transact-SQL nie zapewnia sposób do subskrybować powiadomień.Klasy znajdujących się w ramach dostępu do danych CLR SQL Server nie obsługują kwerendy powiadomień.
Każdy subskrypcja powiadomienie kwerendy daje w wyniku jednego zdarzenie powiadomienie.Po zgłoszeniu, SQL Server Usuwa subskrypcja powiadomienie. W związku z tym aplikacja, która musi być powiadamiany ponownie musi zażądać nowego powiadomienie za pomocą polecenia pobierającej zmienionych danych.
Żądanie powiadomienie kwerendy nie jest transakcyjna.Podczas żądania powiadomień o poleceniu, Database Engine rejestruje powiadomienie, czy po zatwierdzeniu transakcji, które zawiera polecenie lub toczy się ponownie.
Subskrypcje powiadomień kwerendy są przechowywane w bazie danych, gdy kwerenda jest wykonywana.dynamiczny widok zarządzania sys.dm_qn_subscriptions przedstawia informacje na temat kwerendy subskrypcji powiadomienie, które są aktualnie aktywne.Wyświetlanie katalogu sys.internal_tables pokazuje ilość miejsca używanego przez kwerendy powiadomienie subskrypcji, które są aktualnie aktywne.
Wybieranie strategii subskrypcja powiadomienie Using the SqlClient zarządzanego dostawca
Istnieją dwa sposoby żądania subskrypcja powiadomienie.A zależność udostępnia interfejs wysokiego poziom na powiadomienia kwerendy.Aplikację po prostu tworzy wystąpienie klasy zależność (na przykład SqlDependency w ADO.NET), rejestruje obsługi do otrzymania zdarzenie powiadomienie i dodaje obiekt zależności do polecenia query.Obiekt zależności wywołuje program obsługi po wystąpieniu powiadomienie.
A żądanie powiadomienie udostępnia interfejs niższego poziom, bardziej elastyczne do powiadomienie kwerendy.Zależności, takich jak aplikacja tworzy żądanie powiadomienie (na przykład wystąpienie SqlNotificationRequest ADO.NET) i dołącza żądanie powiadomienie do polecenia query.W odróżnieniu od zależności żądanie powiadomienie po prostu żądania subskrypcja powiadomienie dla tej kwerendy.Samej aplikacji musi pobrać komunikaty powiadamiające z bazy danych, przetwarzanie wiadomości i odpowiednio reagować.To zapewnia większą elastyczność projektowania aplikacji, ale wymaga nieco więcej wysiłku.Żądanie powiadomienie jest odpowiednia dla aplikacji, które wymagają elastyczność obsługi powiadomienie.Na przykład aplikacja, która jest uruchamiana według harmonogramu nie można używać zależność, ponieważ obiekt zależności jest niszczony, kiedy kończy pracę aplikacji.Z żądaniem powiadomienie jednak aplikacji można sprawdzić kolejki podczas uruchamiania i odświeżania pamięci podręcznej danych lokalnych w razie potrzeby.
Aplikacje używają zależność aplikacji, która rejestruje subskrypcja powiadomień jest także aplikacja, która będzie przetwarzać powiadomienie, gdy aplikacja będzie nadal uruchomiony stale i gdy połączenie z bazą danych są dostępne w czasie, gdy aplikacja jest uruchomiona.W przypadku aplikacji, które spełniają te wymagania zależności zapewniają łatwy sposób użyć kwerendy powiadomień.Aplikacje wykorzystują żądanie powiadomienie, gdy aplikacja nie może używać zależność.W takim wypadku twórca aplikacji należy projektować strategii do odbierania i proces wiadomości, które ma sens dla aplikacji.
Przy użyciu protokołu SOAP dla powiadomienia
Macierzysta obsługa protokołu SOAP protokołu HTTP obsługuje kwerendy powiadomień.Żądanie protokołu SOAP, które obejmuje <notificationRequest> Nagłówek tworzy subskrypcja powiadomienie dla kwerendy. W z SqlNotificationRequest, żądającego musi pobrać powiadomienie wiadomości z bazy danych, a przetwarzanie wiadomości i odpowiednio reagować.Ta metoda jest well-suited dla aplikacji usługi sieci Web, ponieważ nie jest wymagane połączenie ciągłe SQL Server.
Za pomocą programu SQL Server klient macierzysty dla powiadomienia
Aplikacje używające SQL Server Macierzystego dostawca klient OLE DB lub sterownik ODBC może także przesyłanie żądań powiadomienie. Aby uzyskać informacje dotyczące korzystania z powiadomienia kwerendy z SQL Server Macierzysta aplikacji klient, zobacz Praca z kwerendy powiadomień.