Lektion 1: Skapa baskonversationsobjekten

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

I den här lektionen får du lära dig hur du skapar alla objekt som gör det möjligt för en databas att stödja en konversation i databasen.

Procedurer

Aktivera Service Broker och växla till AdventureWorks-databasen

Notera

Kodexemplen i den här artikeln har testats med hjälp av AdventureWorks2025 exempeldatabas som du kan ladda ned från Microsoft SQL Server-exempel och Community Projects startsida.

Kopiera och klistra in följande kod i ett frågeredigerarefönster. Kör den sedan för att se till att Service Broker är aktiverat i AdventureWorks2025-databasen och växla kontext till databasen.

USE master;
GO

ALTER DATABASE AdventureWorks2022
    SET ENABLE_BROKER;
GO

USE AdventureWorks2022;
GO

Skapa meddelandetyperna

Kopiera och klistra in följande kod i ett frågeredigerarefönster. Kör den sedan för att skapa meddelandetyperna för konversationen. Eftersom Service Broker-objekt ofta refereras över flera instanser av databasmotorn får de flesta Service Broker-objekt namn i URI-format. Detta hjälper till att säkerställa att de är unika på flera datorer. Båda dessa meddelandetyper anger att Service Broker endast verifierar att meddelandena är välformulerade XML-dokument och att XML-koden inte verifieras mot ett specifikt schema.

CREATE MESSAGE TYPE [//AWDB/InternalAct/RequestMessage]
    VALIDATION = WELL_FORMED_XML;

CREATE MESSAGE TYPE [//AWDB/InternalAct/ReplyMessage]
    VALIDATION = WELL_FORMED_XML;
GO

Skapa kontraktet

Kopiera och klistra in följande kod i ett frågeredigerarefönster. Kör det sedan för att skapa kontraktet för konversationen. Kontraktet anger att konversationer som använder det måste skicka meddelanden av typen AWDB/InternalAct/RequestMessage från initieraren till målet och meddelanden av typen AWDB/InternalAct/ReplyMessage från målet till initieraren.

CREATE CONTRACT [//AWDB/InternalAct/SampleContract]
    ([//AWDB/InternalAct/RequestMessage] SENT BY INITIATOR,
    [//AWDB/InternalAct/ReplyMessage] SENT BY TARGET);
GO

Skapa målkön och tjänsten

Kopiera och klistra in följande kod i ett frågeredigerarefönster och kör den sedan för att skapa kön och tjänsten som används för målet. Eftersom köer refereras från samma databas på ett sätt som liknar tabeller och vyer formateras könamn som tabell- eller vynamn. -instruktionen CREATE SERVICE associerar tjänsten med TargetQueueIntAct. Därför tas alla meddelanden som skickas till tjänsten emot i TargetQueueIntAct. Anger CREATE SERVICE också att endast konversationer som använder AWDB/InternalAct/SampleContract som skapades tidigare kan använda tjänsten som en måltjänst.

CREATE QUEUE TargetQueueIntAct;

CREATE SERVICE [//AWDB/InternalAct/TargetService]
    ON QUEUE TargetQueueIntAct
    ([//AWDB/InternalAct/SampleContract]);
GO

Skapa initierarkön och tjänsten

Kopiera och klistra in följande kod i ett frågeredigerarefönster och kör den sedan för att skapa kön och tjänsten som används för initieraren. Eftersom inget kontraktnamn har angetts kan inga andra tjänster använda den här tjänsten som måltjänst.

CREATE QUEUE InitiatorQueueIntAct;

CREATE SERVICE [//AWDB/InternalAct/InitiatorService]
    ON QUEUE InitiatorQueueIntAct;
GO

Nästa steg

Du har konfigurerat AdventureWorks2025 för att stödja en konversation mellan //AWDB/InternalAct/InitiatorService och //AWDB/InternalAct/TargetService.