Creating a Query for Notification
Funkcji powiadomień kwerendy opiera się na zmianę mechanizm wykrywania, Database Engine używa w celu obsługi widoków indeksowanych. Wymagania i ograniczenia dla instrukcji kwerendy dla powiadomienie są podobne do wymagań i ograniczeń dla widok indeksowany.
Ustawienia opcji zestaw
Po wykonaniu instrukcja SELECT w obszarze żądanie powiadomienie połączenie, które przesyła żądanie musi mieć opcje dla połączenia zestaw w następujący sposób:
NA ANSI_NULLS
NA ANSI_PADDING
NA ANSI_WARNINGS
NA CONCAT_NULL_YIELDS_NULL
NA QUOTED_IDENTIFIER
NUMERIC_ROUNDABORT WYŁĄCZONE
NA ARITHABORT
Uwaga
ting zestaw ANSI_WARNINGS do ON niejawnie zestaw s ARITHABORT on, gdy poziom zgodności bazy danych jest zestaw 90.Jeśli poziom zgodności bazy danych jest ustawiony na 80 lub wcześniej, opcja ARITHABORT musi jawnie ustawiona na ON.
Instrukcja nie musi być uruchamiana poziomów izolacji READ_UNCOMMITTED lub migawka.
Jeśli te opcje lub poziom izolacji nie jest odpowiednio ustawiona, powiadomienie jest uruchamiany natychmiast po wykonaniu instrukcja SELECT.Po uaktywnieniu powiadomienie połączenia, które polecenia, która powoduje, że zgłoszenia do ognia musi również posiadać opcji zestaw ustaw, jak to pokazano.W przeciwnym razie, polecenie kończy się niepowodzeniem i nie następuje Transact-SQL Wystąpił błąd.
Jeśli instrukcja jest zawarty w procedurze przechowywanej, opcja ANSI_NULLS i opcji QUOTED_IDENTIFIER muszą być zestaw podczas tworzenia procedura przechowywana.Aby uzyskać więcej informacji zobacz SET ANSI_NULLS (Transact-SQL) i zestaw QUOTED_IDENTIFIER (języka Transact-SQL).
Instrukcje dla powiadomienie
Ogólnie rzecz biorąc można zażądać powiadomienie dla dowolnej kwerendy, które mogą być używane do utworzenia widok indeksowany.Można zdefiniować powiadomienia dla następujących instrukcji:
WYBIERZ OPCJĘ
Aby poznać wymagania i ograniczenia dotyczące SELECT Zobacz „ obsługiwane SELECT instrukcji "poniżej.Aby uzyskać więcej informacji na temat instrukcja SELECT zobacz SELECT (Transact-SQL).
wykonać
W takim przypadek SQL Server rejestruje powiadomienie dla polecenia wykonać, a nie samą deklarację wykonać. Polecenie musi spełniać wymagania i ograniczenia dotyczące instrukcja SELECT.Aby uzyskać więcej informacji na temat instrukcja wykonać zobacz EXECUTE (Transact-SQL).
Gdy polecenie, które rejestruje powiadomienie zawiera więcej niż jedną instrukcję Database Engine Tworzy powiadomienia dla każdej instrukcja w instancji.
Obsługiwane instrukcji SELECT
Kwerendy powiadomień są obsługiwane dla instrukcji SELECT, które spełniają następujące wymagania:
Rzutowany kolumn w instrukcja SELECT musi być jawnie podane, a nazwy tabel musi być kwalifikowany z dwóch części nazwy.Należy zwrócić uwagę, to oznacza, że wszystkie tabele, do którego odwołuje się w instrukcja nie może być w tej samej bazie danych.
Instrukcja nie może używać znaku gwiazdki ** lub nazwa_tabeli. * składni, aby określić kolumny.
Instrukcji nie może użyć bez nazwy kolumna s lub zduplikowane kolumna nazwy.
Instrukcja musi odwoływać się do tabela bazowa.
W instrukcja nie musi odwoływać się do tabel z kolumny obliczane.
Rzutowany kolumn w instrukcja SELECT nie może zawierać agregacja wyrażeń, chyba że w instrukcja jest używane wyrażenie GROUP BY.Po wyrażeniu GROUP BY, lista wyboru mogą zawierać funkcji agregacja COUNT_BIG() lub sum().Jednak sum() nie mogą być określone dla pustych kolumn.Instrukcja nie może określić HAVING, moduł lub ROLLUP.
Rzutowany kolumna w instrukcja SELECT, który jest używany jako proste wyrażenie nie umieszcza się więcej niż jeden raz.
Instrukcja nie może zawierać PIVOT lub UNPIVOT operatorów.
Instrukcja nie może zawierać operatory UNION, PRZETNIJ lub EXCEPT.
Instrukcja nie musi odwoływać się do widoku.
Instrukcja nie może zawierać żadnego z następujących czynności: DISTINCT, COMPUTE COMPUTE BY lub W.
Zmienne globalne serwera nie musi odwoływać się w instrukcja (@@nazwa_zmiennej).
Instrukcja nie musi odwoływać się pochodnego tabel, tabele tymczasowe lub zmienne Tabela.
Instrukcja nie musi odwoływać tabel lub widoków z innych baz danych lub innych serwerów.
Instrukcja nie może zawierać podkwerend sprzężeń zewnętrznych lub self-joins.
Instrukcja nie musi odwoływać się dużych obiektów: text, ntext, a image.
Instrukcja nie może używać CONTAINS lub FREETEXT predykaty pełnego tekstu.
Instrukcja nie może używać funkcji zestawu zestaw wierszy, w tym OPENROWSET i OPENQUERY.
Instrukcja nie wolno używać żadnego z następujących funkcji agregujących: AVG, Count(*), MAX, MIN, STDEV, STDEVP, VAR lub funkcji WARIANCJA.POPUL.
Instrukcja nie może używać dowolnego nondeterministic funkcji, w tym funkcji klasyfikacji i windowing.
Instrukcja nie może zawierać zagregowanych przez użytkownika.
Instrukcja nie musi odwoływać się system tabel lub widoków, w tym katalogu, widoki i widoki dynamicznego zarządzania.
Instrukcja nie może zawierać informacje FOR BROWSE.
Instrukcja nie musi odwoływać się do kolejki.
Instrukcja nie może zawierać instrukcji warunkowych, których nie można zmienić, a nie zwracają wyniki (na przykład WHERE 1 = 0).
Instrukcja nie może określić READPAST wskazówki blokowania.
Instrukcja nie musi odwoływać się żadnych usługa Broker QUEUE.
Instrukcja nie musi odwoływać się synonimy.
Instrukcja nie może mieć porównania lub wyrażenie w oparciu o dane dwukrotnie/rzeczywistym typów.
Instrukcja nie może używać U GÓRY wyrażenie.
Zadania wsadowe i procedur przechowywanych
Jeżeli do partia lub procedura przechowywana zostanie zgłoszone żądanie subskrypcja, dla każdego sprawozdania wykonywane w ramach programu wsadowego lub procedura przechowywana zostanie zgłoszone żądanie oddzielne subskrypcja.
Instrukcji wykonać nie zarejestruje powiadomienie, ale będzie przepływał żądanie powiadomienie wykonane polecenie.Jeśli jest to partia, kontekście będą stosowane do uruchomionych instrukcji i zastosować te same reguły opisane powyżej.
Duplikowanie subskrypcji
Przesyłanie duplikat subskrypcja aktywnej powoduje, że istniejących subskrypcja należy odnowić przy użyciu nowej wartości określonego limitu czas.Zduplikowane subskrypcja to takie, które spełniają następujące warunki:
Kwerenda jest przesyłana przez ten sam użytkownik, w tym samym kontekście bazy danych.
Używane są tego samego szablonu, wartości parametrów, identyfikator powiadomienie i lokalizacji dostarczania.
Oznacza to, że jeżeli dla identycznych kwerendy wymagane jest powiadomienie, tylko jeden powiadomienie jest wysyłane.Dotyczy to do kwerendy zduplikowane w partia lub kwerendę w procedurze przechowywanej, który nazywa się wiele razy.