Vidarebefordran av service broker-meddelanden

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

Vidarebefordring av Service Broker-meddelanden gör att en instans av SQL Server kan ta emot meddelanden utanför instansen och skicka dessa meddelanden till en annan instans.

En administratör kan använda meddelandevidarebefordring för att:

  • Tillhandahålla anslutning mellan servrar i olika betrodda domäner.

  • Förenkla administrationen genom att skapa en enda centraliserad instans som innehåller routningsinformationen för en domän.

  • Distribuera arbete mellan flera instanser.

När vidarebefordran är aktiverad avgör routningstabellen i msdb.sys.routes om ett meddelande som kommer från en annan instans vidarebefordras. Om adressen för matchande väg inte LOCALär vidarebefordrar SQL Server meddelandet till den angivna adressen. Annars levereras meddelandet lokalt.

Varje Service Broker-meddelande innehåller en maximal livslängd och ett antal gånger som meddelandet har vidarebefordrats. När en instans vidarebefordrar meddelandet ökar den instansen antalet i meddelandet. Om meddelandet överskrider den maximala livslängden tar vidarebefordrande instansen bort meddelandet. Den här strategin hjälper till att undvika problem i situationer där en routningsloop kan finnas.

Vidarebefordran och tillförlitlig leverans

En instans som vidarebefordrar ett meddelande bekräftar inte meddelandet till avsändaren. Endast det slutliga målet bekräftar meddelandet. Om avsändaren inte får någon bekräftelse från målet efter en viss tid försöker avsändaren skicka meddelandet igen.

En instans som utför vidarebefordran av meddelanden behöver inte lagra vidarebefordrade meddelanden. I stället innehåller SQL Server meddelanden som ska vidarebefordras i minnet. Mängden minne som är tillgängligt för vidarebefordran av meddelanden anges som en del av service broker-slutpunktskonfigurationen. Den här strategin möjliggör effektiv, tillståndslös vidarebefordran av meddelanden. Om en instans som utför vidarebefordran av meddelanden misslyckas går inga meddelanden förlorade. Varje meddelande underhålls alltid på avsändaren tills slutmålet bekräftar meddelandet, enligt beskrivningen i Kommunikationsprotokoll för Service Broker.

Hanteringsvyn sys.dm_broker_forwarded_messages innehåller information om meddelanden som för närvarande håller på att vidarebefordras av instansen. En instans bevarar inte meddelanden under vidarebefordran. dessa meddelanden finns bara i minnet. Den instans som skickade meddelandet och den instans som tar emot meddelandet bevarar meddelandena. Den sändande instansen tar inte bort meddelandet förrän den mottagande instansen bekräftar mottagandet av meddelandet.

Säkerhet och vidarebefordran

Vidarebefordring av service broker-meddelanden kräver ingen vidarebefordransinstans för att dekryptera det vidarebefordrade meddelandet. Därför måste endast de databaser som deltar i konversationen ha dialogsäkerhet konfigurerad.

Men eftersom transportsäkerhet gäller för anslutningarna mellan SQL Server-instanser måste varje SQL Server-instans ha transportsäkerhet korrekt konfigurerad för de instanser som den kommunicerar med direkt. Om till exempel instans A och instans B kommunicerar via en vidarebefordransinstans måste både instans A och instans B ha transportsäkerhet korrekt konfigurerad för vidarebefordransinstansen. Eftersom instanserna inte utbyter meddelanden direkt bör instanserna inte ha transportsäkerhet konfigurerad för att kommunicera med varandra.