Udostępnij za pośrednictwem


Opis sortowania i Service Broker

Service Broker zaprojektowano w taki sposób, aby umożliwić usługi i aplikacje w przypadkach z sortowanie różne konfiguracje komunikować się łatwo i skutecznie.Baza danych, obsługującym usługa, która wysyła wiadomość nie może korzystać takie same sortowanie jako bazy danych, obsługującym usługa, która odbiera wiadomość.Dlatego usługa Broker używa spójnego sortowanie nazw, niezależnie od sortowanie bazy danych obsługującego usługa.Aby usunąć informacje dotyczące sortowanie z procesu komunikacji usługa Broker używa nazwy usług, nazw kontrakt i wiadomości wpisz nazwy porównanie bajt po bajcie.Dopasowując nazwy jako sekwencje bajtów Service Broker upraszcza usług do wymiany wiadomości poprawnie bez dodatkowej wymiany informacji dotyczących sortowanie.

Dopasuj bajt po bajcie skutecznie jest porównanie binarne, który bierze pod uwagę bieżące sortowanie.Z tego powodu wiele usług broker nakazanie do zaleceń w Naming Service Broker obiektów.Aplikacja następujące wytyczne i traktuje wszystkie nazwy wielkooci liter powinna funkcja poprawnie niezależnie od różnic podczas sortowanie baz danych, obsługującym usługa miejsce docelowe i obsługującym usługa inicjujący.

Uwagi dotyczące sortowania kolejki

Kolejki użyć spójne sortowania niezależnie od domyślny porządek sortowania SQL Server wystąpienie lub sortowanie domyślne bazy danych obsługującego kolejki.Jeśli kolejka jest miejsce docelowe instrukcja SELECT zawierająca instrukcji JOIN z inną tabelą w bazie danych, takim jak tabela służy do zarządzania stanem, może być wymagane jawnie określić sortowanie dla porównania.

Na przykład aplikacja używa komunikatu retencji trzeba zachować niektóre wiadomości w konwersacji, przed zastosowaniem kończy konwersacji.Następujące Transact-SQL Przykładowy kod zapisuje wszystkie wiadomości dla danego konwersacji, mają nazwy typ komunikatu w tabela AuditedMessageTypes.

IF @messageTypeName =
  'https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog'
BEGIN
  INSERT INTO dbo.AuditRecord
    SELECT q.message_type_name, q.message_body
      FROM dbo.ApplicationQueue AS q
        JOIN dbo.AuditedMessageTypes AS am ON
             am.message_type_name = q.message_type_name
             COLLATE Latin1_General_BIN
           AND
             q.conversation_handle = @conversationHandle
   END CONVERSATION @conversationHandle
END

Instrukcja SELECT określa wyraźnie porównanie binarne dla pasujące nazwy typ komunikatu.Ponieważ kolejka nie używa domyślnie sortowanie bazy danych, klauzula COLLATE jest wymagana dla porównania am.message_type_name = q.message_type_name się powiodła.Instrukcja Określa binarny sortowanie, Latin1_General_BIN, do zachowania wewnętrznego porównania, usługa Broker używa w celu dopasowania nazw usług.

Uwagi dotyczące sortowania aplikacji

Service Broker przesyła treść wiadomości jako dane binarne i nie powoduje modyfikacji zawartości wiadomości.Jeśli aplikacje wymieniać dane wrażliwe sortowanie, aplikacje muszą obsługiwać wszelkie różnice sortowanie.Aplikacje zwykle wymiany tekstu używać typów Unicode zminimalizować problemy sortowanie.