Lektion 1: Skapa konversationsobjekten

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

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

Rutiner

Aktivera Service Broker och växla till databasen AdventureWorks2008R2

Note

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 databasen AdventureWorks2008R2 och växla kontext till databasen.

    USE master;
    GO
    
    ALTER DATABASE AdventureWorks2008R2
        SET ENABLE_BROKER;
    GO
    
    USE AdventureWorks2008R2;
    GO
    

Skapa meddelandetyperna

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster och 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 säkerställer 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 de inte verifierar XML-koden mot ett specifikt schema.

    CREATE MESSAGE TYPE [//AWDB/1DBSample/RequestMessage]
        VALIDATION = WELL_FORMED_XML;
    
    CREATE MESSAGE TYPE [//AWDB/1DBSample/ReplyMessage]
        VALIDATION = WELL_FORMED_XML;
    GO
    

Skapa kontraktet

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

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

Skapa målkön och tjänsten

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster. 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 TargetQueue1DB. Därför tas alla meddelanden som skickas till tjänsten emot i TargetQueue1DB. Anger CREATE SERVICE också att endast konversationer som använder AWDB/1DBSample/SampleContract som skapades tidigare kan använda tjänsten som måltjänst.

    CREATE QUEUE TargetQueue1DB;
    
    CREATE SERVICE [//AWDB/1DBSample/TargetService]
        ON QUEUE TargetQueue1DB
        ([//AWDB/1DBSample/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 InitiatorQueue1DB;
    
    CREATE SERVICE [//AWDB/1DBSample/InitiatorService]
        ON QUEUE InitiatorQueue1DB;
    GO
    

Nästa steg

Du har konfigurerat AdventureWorks2008R2 för att stödja en konversation mellan AWDB/1DBSample/InitiatorService och AWDB/1DBSample/TargetService. Därefter slutför du en konversation med hjälp av konfigurationen.