Lektion 4: Starta konversationen

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

I den här lektionen lär du dig att starta en konversation som sträcker sig över två instanser av databasmotorn och skickar ett meddelande om begäran från initierarinstansen till målinstansen. Kör de här stegen från en kopia av Management Studio som körs på samma dator som initierarinstansen.

Procedures

Växla till InitiatorDB-databasen

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster. Kör den sedan för att växla kontext till den InstInitiatorDB-databas där du initierar konversationen.

    USE InstInitiatorDB;
    GO
    

Starta en konversation och skicka ett meddelande om begäran

Kopiera och klistra in följande kod i ett frågeredigerarefönster, kör den sedan för att starta en konversation och skicka ett begärandemeddelande till TgtDB/2InstSample/TargetService i InstTargetDB. Koden måste köras i ett block eftersom en variabel används för att skicka ett dialoghandtag från BEGIN DIALOG till -instruktionen SEND .

Batchen kör -instruktionen BEGIN DIALOG för att starta konversationen och skapar sedan ett meddelande om begäran. Sedan använder den dialoghandtaget i en SEND -instruktion för att skicka begärandemeddelandet om konversationen. Den sista SELECT instruktionen visar bara texten i meddelandet som skickades.

DECLARE @InitDlgHandle AS UNIQUEIDENTIFIER;
DECLARE @RequestMsg AS NVARCHAR (100);

BEGIN TRANSACTION;

BEGIN DIALOG @InitDlgHandle
    FROM SERVICE [//InstDB/2InstSample/InitiatorService]
    TO SERVICE N'//TgtDB/2InstSample/TargetService'
    ON CONTRACT [//BothDB/2InstSample/SimpleContract]
    WITH ENCRYPTION = ON;

SELECT @RequestMsg = N'<RequestMsg>Message for Target service.</RequestMsg>';

SEND ON CONVERSATION (@InitDlgHandle)
    MESSAGE TYPE [//BothDB/2InstSample/RequestMessage] (@RequestMsg);

SELECT @RequestMsg AS SentRequestMsg;

COMMIT TRANSACTION;
GO