Udostępnij przez


Opis wystąpieniu powiadomień kwerendy

Pojęcie za powiadomienie kwerendy jest aplikacja może polegać na buforowanych danych, 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:

  • Wierszy w kwerendzie wyniki mogła ulec zmianie.

  • Subskrypcja wygaśnie.

  • Serwer zostanie ponownie uruchomiony.

  • Kwerendy powiadomienie subskrypcja nie można utworzyć (na przykład instrukcja SELECT nie są zgodne z wymaganiami określonymi w Tworzenie kwerendy powiadomień.

  • Obciążonego serwera.

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

Należy zauważyć, że SQL Server może powodować powiadomienie kwerendy w odpowiedzi na zdarzenia, które nie zmieniają dane, albo w odpowiedzi na zmiany, która rzeczywiście wpływają na wyniki kwerendy.Na przykład po zmianie jednego z wierszy zwracanych przez kwerendę instrukcja UPDATE powiadomienie może pożarowego nawet, jeśli aktualizacja wiersza nie zmienił kolumn w kwerendzie wyniki.Kwerendy powiadomień są przeznaczone do obsługi ogólną celem poprawy wydajności dla aplikacji, które pamięci podręcznej danych.Gdy obciążonego serwera SQL Server może generować kwerendę powiadomienie wiadomości subskrypcja zamiast wykonywania pracy określenia, czy wyniki kwerendy zostały zmienione.

Subskrypcja powiadomień występuje przed Aparat baz danych uruchamia każdej instrukcja w żądanie subskrypcji.Dlatego, jeżeli polecenie zawiera kwerendę i sprawozdań, które zmienia danych zwracanych przez kwerendę, aplikacja może odbierać powiadomienie wiadomości przed zakończeniem polecenia, który zawiera żądanie subskrypcja.

Każda subskrypcja ma określony minimalny okres istnienia.Po minimalny okres istnienia SQL Server usuwa subskrypcja i tworzy powiadomienie komunikat.Komunikat informuje aplikacji powiadomienie jest już aktywna, i SQL Server jest już śledzenie zmian na kwerendę.

Gdy SQL Server rozpoczyna się, 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 do uruchomienia bez przetwarzania kwerendy w każdym powiadomienie.Po upuszczeniu bazy danych, Aparat baz danych tworzy kwerendę powiadomienie wiadomości dla wszystkich subskrypcji zarejestrowany w tej bazie danych.

Jeśli żądanie subskrypcja powiadomienie jest przesyłany z kwerendy, która nie spełnia wymagań dla kwerendy powiadomienie, bazy danych natychmiast daje komunikat z powiadomieniem kwerendy.Ta wiadomość informuje aplikacji, że kwerenda nie spełniają wymagań dla subskrypcja.Dodatkowo, ponieważ SQL Server nie może śledzić zmiany w kwerendzie aplikacji należy wziąć pod uwagę wyniki kwerendy nie będą data natychmiast.

Ostrzeżenie

Subskrypcja powiadomienie kwerendy zarządzanych przez obiekt zależności (takich jak SqlDependency w ADO.NETTO) nie wytwarzają zdarzenie, jeśli połączenie między aplikacją a bazą danych.Jednak gdy aplikacji znowu może uzyskać dostęp do bazy danych, aplikacja natychmiast odbiera powiadomienia utworzone podczas bazy danych jest nieosiągalny.

Kiedy polecenie daje powiadomienie wiadomości, proces tworzenia i wysyłania powiadomienie występuje jako część instrukcja, w obrębie transakcji, który wytwarza powiadomienie wiadomości.Jeśli Aparat baz danych nie może pomyślnie utworzyć i wysłać powiadomienie wiadomości, polecenie zawiedzie i błąd jest rejestrowany w SQL Server można błądNależy zauważyć, że Aparat baz danych usuwa powiadomienie subskrypcja podczas produkowane komunikat z powiadomieniem, niezależnie od tego, czy Aparat baz danych pomyślnie wygenerowane komunikat z powiadomieniem.

Ostrzeżenie

Subskrypcje są usuwane bez wytwarzania komunikat z powiadomieniem podczas tworzenia subskrypcja konto użytkownika bazy danych jest porzucone lub wyłączona, gdy baza danych zawierająca subskrypcja jest dołączony lub KILL SUBSKRYPCJĘ powiadomienie kwerendy służy do usuwania subskrypcja.