Udostępnij przez


Otrzymywanie powiadomień

Wiele aplikacji nie ma konieczności zawierać kod do odbierania i przetwarzania powiadomień kwerendy.Kiedy zarządza subskrypcja powiadomienie SqlDependency obiektu, który obiekt automatycznie monitoruje subskrypcja.Po odebraniu komunikat z powiadomieniem, SqlDependency obiektu wywołuje obsługa zdarzeń zarejestrowanych w SqlDependency obiektu.Z tej metody nie ma żadnych specjalnych pracy wymaganej do otrzyma powiadomienie.Aplikacja, która korzysta z SqlDependency nie jest konieczne do odbierania i przetwarzania wiadomości powiadomienie.

Z drugiej strony jeśli aplikacja używa żądanie powiadomienie, aplikacja musi monitorowania kolejki i reagować na komunikat z powiadomieniem.W takim przypadek można napisać aplikację, która przetwarza wiadomości dla usługa, która odbiera powiadomienia.Aplikacja, która żąda powiadomienie może być ich tej samej aplikacji, która przetwarza wiadomości lub może tworzyć innej aplikacji do odbierania i reagować na komunikat z powiadomieniem kwerendy.

SQL Server śledzi subskrypcji powiadomienie przy użyciu kombinacji identyfikator powiadomienie i kwerendy rzeczywiste przesłane.Jeśli aplikacja żąda powiadomienie dla dwóch różnych kwerendy przy użyciu tego samego IDENTYFIKATORA powiadomienie SQL Server tworzy dwa subskrypcji z tego samego identyfikatora powiadomienie. Niemniej jednak, jeśli aplikacja żąda powiadomienie tej samej kwerendy o takim samym identyfikatorze powiadomienie dwa razy, SQL Server tworzy pojedynczy subskrypcja z limit czas określony w żądaniu drugiego.

Aplikacje, które są uruchamiane w bazie danych są zazwyczaj przechowywane procedury uaktywniony przez kolejkę po nadejściu wiadomości.Te procedury przechowywane mogą być zapisywane w jednym Transact-SQL lub w jednym z języków .NET. Mniej popularne metody obejmują jako zadanie zaplanowane na którym uruchomiona jest aplikacja lub za pomocą uruchomienia zadania do uruchomienia procedura przechowywana ciągły w tle.

Aplikacje, które są zazwyczaj uruchamiane poza bazą danych należy użyć jednej z następujących podejść do odbierania wiadomości:

  • Aplikacja może sprawdzają, czy kolejka okresowo, aby sprawdzić, jeśli wiadomość dotarła.

  • Do blokowania wykonywanie programu wsadowego lub procedura przechowywana na wyciągu przyjęcie, dopóki instrukcja zwraca wartość co najmniej jeden wiersz, aplikacji można użyć klauzula WAITFOR instrukcji przyjęcie.

  • Aplikacja może utworzyć powiadomienie o zdarzenie dla zdarzenie QUEUE_ACTIVATION na kolejkę, która otrzyma powiadomienie.Aplikacja może następnie monitorować usługa, która odbiera zdarzenie aktywacja przy użyciu jednej z dwóch poprzednich strategii.

Mniej popularne metody obejmują monitorowania kolejki aktywacja przy użyciu usługi WMI lub zapisywania wspólne języka plików wykonywalnych (CLR) przechowywane procedurę, która ma inną akcja zewnętrznych w odpowiedzi na wiadomość.

Ponieważ okna dialogowe powiadomienie kwerendy zawsze zawierają pojedyncze komunikat z powiadomieniem, aplikacja, która przetwarza kwerendy powiadomienie musi być zakończona konwersacji po odebraniu wiadomości.W przeciwnym razie okno dialogowe po pewnym czasie limitu czasu.Gdy okno dialogowe kwerendy powiadomienie czas, SQL Server rejestruje błąd przekroczenia limitu czas w oknie dialogowym w SQL Server Dziennik błędów.

Aby uzyskać więcej informacji na temat pisania aplikacji korzystającej z usługa Broker, zobacz Korzyści wynikające z programowanie z usługa Broker. Aby uzyskać więcej informacji dotyczących sposobu uruchamiania aplikacji korzystającej Z Broker zobacz Wybieranie strategii Autostart.