Routes

gäller för:SQL ServerAzure SQL Managed Instance

Service Broker använder vägar för att avgöra var meddelanden ska levereras. När en tjänst skickar ett meddelande i en konversation använder SQL Server vägar för att hitta den tjänst som ska ta emot meddelandet. När den tjänsten svarar använder SQL Server återigen vägar för att hitta den initierande tjänsten. Som standard innehåller varje databas en väg som anger att meddelanden för alla tjänster som inte har en explicit väg levereras i SQL Server-instansen.

Det finns tre grundläggande komponenter i en väg:

  • Tjänstnamn

    Namnet på den tjänst som den här vägen anger adressering för. Det här namnet måste vara en exakt matchning för tjänstnamnet i BEGIN DIALOG kommandot .

  • Brokerinstansidentifierare

    En unik identifierare för en specifik databas som meddelandena ska skickas till. Det här är service_broker_guid kolumnen i tabellraden sys.databases för databasen som den här vägen pekar på.

  • Nätverksadress

    En faktisk datoradress, ett nyckelord som begränsar vägen till den lokala datorn eller ett nyckelord som anger att transportlagret härleder adressen från tjänstnamnet. En nätverksadress kan vara adressen till den asynkron meddelandekö som är värd för tjänsten, eller så kan det vara adressen till en vidarebefordrande asynkron meddelandekö.

För att fastställa vägen för en konversation matchar SQL Server tjänstnamnet och koordinatorinstansidentifieraren som angavs i -instruktionen BEGIN DIALOG CONVERSATION mot tjänstnamnet och koordinatorinstansidentifieraren som anges i vägen. Vägar som inte anger ett tjänstnamn matchar något tjänstnamn. Vägar som inte tillhandahåller en koordinatorinstansidentifierare matchar någon koordinatorinstansidentifierare. När mer än en väg matchar en konversation väljer SQL Server en väg enligt beskrivningen i Service Broker-routning.

SQL Server garanterar att alla efterföljande meddelanden på konversationsvägen till samma databas när målet bekräftar det första meddelandet. Andra konversationer i samma konversationsgrupp är dock inte garanterade att dirigera till samma databas. Om ett program kräver att meddelanden på relaterade konversationer dirigeras till samma databas måste programmet ange en koordinatorinstansidentifierare när programmet påbörjar en konversation.

Som standard innehåller varje användardatabas vägen AutoCreatedLocal. Den här vägen matchar alla tjänstnamn och asynkrona instanser och anger att meddelandet ska levereras i den aktuella instansen. För enkla scenarier där både initieraren och målet för konversationen finns i samma SQL Server-instans behövs inga ytterligare vägar. Att skapa en väg för varje tjänst hjälper dock till att skydda mot att ändra eller ta bort autoskapaLokal väg.