Udostępnij za pośrednictwem


Zarządzanie usługa Broker tożsamości

Każda baza danych zawiera identyfikator unikatowy, używanego do routingu Service Broker wiadomości do tej bazy danych. W tym temacie opisano Service Broker identyfikatory, w jaki sposób Service Broker chroni przed misdirection komunikatów i opcji, które są dostępne do zarządzania Service Broker identyfikatory.

usługa Broker identyfikatory

Każda baza danych zawiera Service Broker Identyfikator, które odróżniają ją od wszystkich innych baz danych w sieci. The service_broker_guid column of the sys.databases catalog view shows the Service Broker identifier for each database in the instance.Service Broker systems can be designed to run multiple copies of a service.Każda kopia usługa są uruchamiane w oddzielnych baz danych.W systemie z wielu kopii usługa należy użyć klauzula BROKER_INSTANCE instrukcja CREATE trasa utworzyć trasa do określonego kopię tej usługa.

Service Broker routingu używa Service Broker Identyfikator, aby zapewnić, że wszystkie wiadomości konwersacji są dostarczane do tej samej bazy danych. Instrukcja BEGIN KONWERSACJI DIALOG otwiera konwersacji z usługa obiekt docelowy.If a conversation is successfully opened, the acknowledgement message from the destination service contains the Service Broker identifier for the destination database.Service Broker then routes all messages for the conversation to the specified database.

Service Broker identyfikatory mogą być określone w klauzula usługa do instrukcja BEGIN KONWERSACJI DIALOG do kontrolowania typu marszruty, do wykonania:

  • Aby rozesłać konwersacji w określonej kopii usługa, należy określić service_broker_guid.Na przykład w trzy bazy danych w sieci może mieć trzy kopie usługa: roboczą bazę danych, testowej bazy danych i produkcyjnej bazy danych. Należy określić instrukcji BEGIN DIALOG KONWERSACJI w każdym systemie service_broker_guid upewnij się, że wszystkie wiadomości, przejdź do poprawnej bazy danych.

  • To let Service Broker balance conversation loads across multiple copies of a service, do not specify service_broker_guid.Service Broker will alternatively pick among the routes with the same service name as is specified in the TO SERVICE clause of BEGIN DIALOG CONVERSATION.

Domyślnie, jeśli istnieje tylko jedna kopia usług w sieci Service Broker poprawne trasy konwersacji. Nie trzeba podawać Service Broker Identyfikator w instrukcji CREATE trasa lub KONWERSACJI DIALOG BEGIN.

Aby uzyskać więcej informacji na temat Service Broker rozesłać dopasowania, zobacz usługa Broker routingu.

Aby poprawnie obsługuje dostarczanie wiadomości, każda Service Broker Identyfikator powinna być unikatowa we wszystkich wystąpień Database Engine w tej samej sieci. W przeciwnym razie może być błędnie wiadomości.Jeśli zostanie utworzona nowa baza danych, zostanie on przypisany nowy Service Broker Identyfikator, który powinien być unikatowy w sieci. Identyfikator jest przywracany w bazie danych przywrócone lub dołączony.Należy zachować ostrożność podczas przywracanie i dołączanie bazy danych.Nie powinien mieć wiele baz danych, które wykonują aktywnie Service Broker operacje i używać tych samych identyfikatorów.

Dostarczanie wiadomości usługa Broker

SQL Server udostępnia mechanizm dezaktywowania Service Broker dostarczanie wiadomości w bazie danych, jeśli ma ona taki sam Service Broker Identyfikator w innej bazie danych w tej samej sieci. Podczas dostarczania wiadomości jest dezaktywowane w bazie danych, wszystkie wiadomości wysłane z tej bazy danych pozostają w kolejce transmisji dla bazy danych.Dodatkowo, Service Broker nie bierze pod uwagę usług w tej bazie danych ma być dostępny do odbierania wiadomości. usługa te nie są uwzględniane podczas Service Broker Routing lokalizuje usługa docelowej w wystąpienie.

Dezaktywowanie Service Broker dostarczanie wiadomości pozwala bezpiecznie dołączyć kopię zapasową bazy danych w celu rozwiązywania problemów lub dane odzyskiwanie bez ryzyka misdirected wiadomości. The is_broker_enabled kolumna of sys.databases shows the current state of Service Broker message delivery for each database.

Po dołączeniu lub przywracanie bazy danych, użycie opieki zapewniające tylko jednej bazy danych zawierającej danej Service Broker identyfikator ma aktywne dostarczenia wiadomości. W przeciwnym razie może być błędnie wiadomości i przetwarzanie konwersacji mogą pojawić się w niewłaściwej kopii bazy danych.

Zarządzanie identyfikatory i dostarczanie wiadomości

Polecenie Tworzenie bazy danych, polecenie ALTER DATABASE i polecenie przywracanie DATABASE zawiera opcje, aby uaktywnić Service Broker dostarczanie wiadomości. Zawierają one również opcje pozwalające na zmianę Service Broker Identyfikator bazy danych.

Domyślnie, podczas dołączania lub przywracanie bazy danych, Service Broker Identyfikator i stan dostarczania wiadomości nie uległy zmianie. Zazwyczaj nie trzeba zmieniać Service Broker Identyfikator w następujących sytuacjach:

  • Gdy użytkownik przywracanie kopia zapasowa w celu odzyskiwanie.

  • Konfiguruje parę dublowane.

  • Po skonfigurowaniu wysyłanie serwer rezerwy dziennika.Dokonując kopię bazy danych, można zmienić identyfikatora wystąpienie.

Możliwe są cztery opcje zarządzania identyfikatorów i dostarczania wiadomości:

  • ENABLE_BROKER.Ta opcja uaktywnia Service Broker dostarczanie wiadomości, zachowując istniejące Service Broker Identyfikator bazy danych.

    Uwaga

    Enabling SQL Server Service Broker in any database require a database lock.Aby włączyć Service Broker w msdb bazy danych, pierwszą zatrzymania SQL Server Agent. Następnie, Service Broker można uzyskać blokada niezbędne.

  • DISABLE_BROKER.Ta opcja dezaktywuje Service Broker dostarczanie wiadomości, zachowując istniejące Service Broker Identyfikator bazy danych.

  • NEW_BROKER.Ta opcja uaktywnia Service Broker dostarczanie wiadomości i tworzy nową Service Broker Identyfikator bazy danych. Ta opcja kończy wszystkie konwersacje istniejących w bazie danych i zwraca błąd dla każdej konwersacji.Dzieje się tak, ponieważ te konwersacji nie należy używać nowego identyfikatora.Każda trasa, która odwołuje się do starego Service Broker Identyfikator musi być utworzony ponownie z nowym identyfikatorem.

  • ERROR_BROKER_CONVERSATIONS.This option activates Service Broker message delivery, preserving the existing Service Broker identifier for the database.Service Broker ends all conversations in the database, and returns an error for each conversation.Ta opcja jest zazwyczaj używana, gdy konieczne jest przywrócenie bazy danych do innego punktu w czasie od innych baz danych, z którymi ma otwartych konwersacji.Wszystkie konwersacje w przywróconej bazy danych musi zostać zakończona z błędem, ponieważ obecnie są one zsynchronizowane z innymi bazami danych.The Service Broker identifier is retained so that all routes that reference the identifier are still valid.

Niezależnie od określona opcja SQL Server nie zezwala na dwie bazy danych, które mają takie same Service Broker Identyfikator zarówno mają aktywne w tym samym wystąpieniu dostarczanie wiadomości SQL Server. Po dołączeniu bazy danych, która ma taki sam Service Broker Identyfikator jak istniejącej bazy danych SQL Server dezaktywuje Service Broker dostarczanie wiadomości w bazie danych, do której jest dołączany.

Aby uzyskać więcej informacji na temat opcji dla dołączania bazy danych zobacz CREATE DATABASE (Transact-SQL) i ALTER DATABASE języka Transact-SQL). Aby uzyskać informacje dotyczące sposobu aktywowania Service Broker wiadomości dostawy w bazie danych, zobacz Jak Uaktywnianie dostarczanie wiadomości usługa Broker w bazy danych (języka Transact-SQL).