Udostępnij przez


Opis, gdy wystąpi kwerendy powiadomień

Pojęcie za kwerendy powiadomienie jest, że aplikacja może polegać na dane buforowane, dopóki nie nadejdzie komunikat z powiadomieniem.If SQL Server can no longer guarantee that the cached data is reliable, SQL Server sends a notification message.SQL Server sends a query notification for a subscription when one of the following events occurs:

  • Wiersze zawartej w kwerendzie wyniki mogła ulec zmianie.

  • Subskrypcja wygaśnie.

  • Serwer zostanie ponownie uruchomiony.

  • Nie można utworzyć subskrypcja powiadomienie kwerendy (na przykład, instrukcja SELECT nie jest zgodna z wymaganiami określonymi w Creating a Query for Notification.

  • Serwer jest silnie załadowany.

  • Obiekty, które zależy od subskrypcja są usunięte lub zmodyfikowane.

Zwróć uwagę, że SQL Server może to powodować powiadomienie kwerendy w odpowiedzi na zdarzenia, które nie zmieniają się dane lub w odpowiedzi na zmiany, która nie ma aktualnie wpływu na wyniki kwerendy. Na przykład, gdy instrukcja UPDATE zmieni się w jednym z wierszy zwracanych przez kwerendę, powiadomienie może ognia nawet wtedy, gdy aktualizacja do wiersza nie zmienił kolumn w kwerendzie wynikiKwerendy powiadomień są przystosowane do ogólnej celu poprawy wydajności aplikacji, które pamięci podręcznej danych.Kiedy serwer silnie załadowaniu SQL Server może generować kwerendę powiadomienie wiadomości subskrypcja zamiast wykonywania pracy określania, czy wyniki kwerendy zostały zmienione.

Subskrypcja powiadomienie występuje przed Database Engine Uruchamia każdej instrukcja w żądaniu subskrypcji. Z tego powodu, jeżeli polecenie zawiera zarówno kwerendy, jak i instrukcji, które zmienia danych zwracanych przez kwerendę, aplikacja może odbierać powiadomienie wiadomości przed zakończeniem polecenia, który zawiera żądanie subskrypcja.

Każdy subskrypcja ma określony minimalny okres istnienia.Po minimalny okres istnienia SQL Server Usuwa subskrypcja i tworzy powiadomienie wiadomości. Komunikat informuje aplikacji powiadomienie jest już aktywny, a SQL Server nie jest już śledzenie zmian w kwerendzie.

Kiedy SQL Server zostanie uruchomiony, serwer automatycznie tworzy kwerendy powiadomienie dla wszystkich subskrypcji powiadomienie kwerendy w bazie danych. To pozwala aplikacjom natychmiast odświeżyć dane buforowane i pozwala SQL Server Aby uruchomić program bez przetwarzania kwerendy w każde powiadomienie. Po upuszczeniu bazy danych, Database Engine tworzy kwerendy powiadomienie dla wszystkich subskrypcji zarejestrowany w tej bazie danych.

Jeśli żądanie subskrypcja powiadomienie jest przesyłany z kwerendy, która nie spełnia wymagań dotyczących kwerendy powiadomienie, w bazie danych natychmiast tworzy komunikat z powiadomieniem kwerendy.Ta wiadomość informuje wniosku, że kwerenda nie spełniało wymagań dotyczących subskrypcja.Dodatkowo, ponieważ SQL Server Nie można śledzić zmiany do kwerendy, aplikację należy wziąć pod uwagę w wynikach kwerendy jest nieaktualny natychmiast.

Uwaga

Zarządza obiekt zależności (takie jak subskrypcja powiadomienie kwerendy SqlDependency ADO.NET) nie produkuje zdarzenie, jeśli połączenie między aplikacją a bazy danych nie powiedzie się.Jednak aplikacja może ponownie uzyskać dostęp do bazy danych, aplikacja natychmiast otrzymuje powiadomienia utworzone podczas bazy danych jest nieosiągalny.

Kiedy polecenie generuje powiadomienie wiadomości, proces tworzenia i wysyłania powiadomienie komunikat jest wyświetlany jako część instrukcja, w obrębie transakcji, która wywołuje powiadomienie wiadomości.Jeśli Database Engine Nie można pomyślnie utworzona i wysłana, komunikat z powiadomieniem, kończy się niepowodzeniem poleceń i błąd jest rejestrowany w SQL Server Dziennik błędów. Zwróć uwagę, że Database Engine Usuwa subskrypcja powiadomienie po komunikat z powiadomieniem jest produkowany, niezależnie od tego czy Database Engine pomyślnie wygenerowane komunikat z powiadomieniem.

Uwaga

Subskrypcje są usuwane bez wytwarzania komunikat z powiadomieniem, gdy konto użytkownika bazy danych, utworzonych subskrypcja jest usunięty lub wyłączony, gdy baza danych zawierająca subskrypcja jest dołączony, lub gdy KILL subskrypcja powiadomienie QUERY można usunąć subskrypcja.