Zarządzanie Service 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 identyfikatorów, jak Service Broker chroni przed niewłaściwego rozpowszechniania wiadomości i opcje, które są dostępne do zarządzania Service Broker identyfikatorów.

Service Broker identyfikatory

Każda baza danych zawiera Service Broker identyfikatora, który odróżnia go od 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 działa w oddzielnej bazy danych.W systemie, który ma wiele kopii usługa należy użyć klauzula BROKER_INSTANCE instrukcja CREATE trasa utworzyć trasa do określonej kopii usługa.

Service Brokerroutingu używa Service Broker identyfikatora w celu zapewnienia, że wszystkie wiadomości w konwersacji są dostarczane do samej bazy danych.Instrukcja rozpocząć KONWERSACJĘ okno DIALOGOWE otwiera konwersację z obiekt docelowy usługa.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 może być określony w klauzula usługi do instrukcja rozpocząć KONWERSACJĘ okna DIALOGOWEGO do kontrolowania rodzaju routingu należy przeprowadzić:

  • Aby trasa konwersacji kopii określonej usługa, określ service_broker_guid.Na przykład może mieć trzy kopie usługa w trzech baz danych w sieci: rozwój bazy danych, testowej bazy danych i produkcyjnej bazy danych.Instrukcje rozpocząć KONWERSACJĘ okna DIALOGOWEGO w każdym systemie należy określić service_broker_guid do zapewnienia, ż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ługa w sieci Service Broker poprawnie routuje konwersacji.Nie trzeba podawać Service Broker identyfikatora w tworzenie MARSZRUTY lub rozpocząć KONWERSACJĘ okno DIALOGOWE sprawozdania.

Więcej informacji o Service Broker trasa dopasowywania, zobacz Service Broker routingu.

Aby poprawnie obsługuje dostarczanie wiadomości każdy Service Broker identyfikator powinny być unikatowe we wszystkich wystąpieniach Aparat baz danych w tej samej sieci.W przeciwnym razie może błędnie wiadomości. Po utworzeniu nowej bazy danych jest przypisany nowy Service Broker identyfikatora, który powinien być unikatowy w sieci.Identyfikator jest przywracany przywrócone lub dołączone bazy danych.Należy zachować ostrożność podczas przywracanie i dołączania bazy danych.Nie powinien mieć wiele baz danych, które są aktywnie wykonywania Service Broker operacji i przy użyciu tych samych identyfikatorów.

Dostarczanie wiadomości Service Broker

SQL Serverudostępnia mechanizm dezaktywowanie Service Broker Dostarczanie wiadomości w bazie danych, jeśli mają ten sam Service Broker identyfikator jak innej bazy danych w tej samej sieci.Podczas dostarczania wiadomości jest dezaktywowany w bazie danych, wszystkie wiadomości wysłane z bazy danych pozostają w kolejce transmisji dla bazy danych.Dalsze, Service Broker nie uzna usług w tej bazie danych ma być dostępny dla przyjęcia wiadomości.usługa te nie są uważane za podczas Service Broker routing lokalizuje usługa docelowej w wystąpienie.

Dezaktywowanie Service Broker dostawy pozwala bezpiecznie dołączyć wiadomość kopia zapasowa bazy danych do celów odzyskiwanie danych lub Rozwiązywanie problemów bez ryzyka wiadomości niewłaściwemu.Is_broker_enabled kolumna sys.databases pokazuje bieżący stan Service Broker Dostarczanie wiadomości dla każdej bazy danych.

Po dołączeniu lub przywracanie bazy danych, użyj dbałość, aby tylko jeden bazy danych zawierającej danego Service Broker identyfikator ma aktywne dostarczania wiadomości.W przeciwnym razie może błędnie wiadomości i przetwarzanie konwersacji mogą występować w niewłaściwej kopii bazy danych.

Zarządzanie identyfikatory i dostarczanie wiadomości

Polecenie CREATE DATABASE, polecenia ZMIEŃ bazę danych i polecenia PRZYWRÓĆ bazę danych zawierają opcje, aby uaktywnić Service Broker dostarczania wiadomości.Zawierają opcje, aby zmienić Service Broker identyfikator dla bazy danych.

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

  • Podczas przywracanie kopia zapasowa w celu odzyskiwanie.

  • Po skonfigurowaniu para.

  • Gdy użytkownik zestaw dziennika wysyłki serwer rezerwowy.Tworząc kopię bazy danych, zmień identyfikator wystąpienie.

Możliwe są cztery opcje zarządzania identyfikatory i dostarczania wiadomości:

  • ENABLE_BROKER.Ta opcja uaktywnia Service Broker Dostarczanie wiadomości, zachowując istniejące Service Broker identyfikator dla bazy danych.

    Ostrzeżenie

    Enabling SQL Server Service Broker in any database require a database lock.Aby włączyć Service Broker w msdb bazy danych, najpierw zatrzymać SQL Server agenta.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 dla bazy danych.

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

  • 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 zwykle używany podczas musi przywrócić bazę danych do innego punktu w czas niż 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ą zsynchronizowane z innymi bazami danych. Service Broker Identyfikator jest zachowywane, tak aby wszystkie trasy, które odwołują się do identyfikatora są nadal ważne.

Niezależnie od określona opcja SQL Server nie zezwala na dwóch baz danych, które mają taki sam Service Broker identyfikator zarówno jest dostarczanie wiadomości, które są aktywne w tym samym wystąpienie z SQL Server.Jeśli dołączania bazy danych, z tym samym Service Broker identyfikator jak istniejącej bazy danych SQL Server dezaktywuje Service Broker wiadomości dostawy w bazie danych, który jest dołączany.

Aby uzyskać więcej informacji na temat opcji dołączania bazy danych, zobacz Tworzenie bazy danych (Transact-SQL) i ALTER DATABASE (Transact-SQL).Aby uzyskać informacje dotyczące sposobu aktywowania Service Broker Dostarczanie w bazie danych wiadomości, zobacz Jak Aktywacja Service Broker dostarczanie wiadomości w bazach danych (Transact-SQL).