Leçon 3 : Terminer les objets de conversation cible

S’applique à :SQL ServerAzure SQL Managed Instance

Dans cette leçon, vous allez apprendre à créer le serveur lié et les itinéraires de l’instance cible du moteur de base de données à l’instance de l’initiateur. Exécutez ces étapes à partir d’une copie de Management Studio exécutée sur le même ordinateur que l’instance cible.

Procédures

Créer des références à des objets de l'initiateur

  • Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Modifiez la FROM FILE clause pour référencer le dossier dans lequel vous avez copié le fichier InstInitiatorCertificate.cer à l’étape 4 de la leçon 2. Puis, exécutez le code pour créer un utilisateur de l'initiateur et extraire le certificat de l'initiateur.

    USE InstTargetDB;
    GO
    
    CREATE USER InitiatorUser WITHOUT LOGIN;
    
    CREATE CERTIFICATE InstInitiatorCertificate
        AUTHORIZATION InitiatorUser
        FROM FILE = N'C:\storedcerts\$ampleSSBCerts\InstInitiatorCertificate.cer';
    GO
    

Créer des itinéraires

  • Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Remplacez la chaîne MyInitiatorComputer par le nom de l’ordinateur qui exécute votre instance de l’initiateur. Exécutez ensuite le code pour créer des itinéraires vers le service cible et le service initiateur, ainsi qu’une liaison de service distant qui associe InitiatorUser à l’itinéraire du service initiateur.

    Les instructions suivantes CREATE ROUTE supposent qu’il n’existe aucun nom de service en double dans l’instance cible. Si plusieurs bases de données sur l’instance cible contiennent des services portant le même nom, utilisez la BROKER_INSTANCE clause pour spécifier la base de données sur laquelle vous souhaitez ouvrir une conversation.

    DECLARE @Cmd AS NVARCHAR (4000);
    
    SET @Cmd = N'USE InstTargetDB;
                    CREATE ROUTE InstInitiatorRoute
                    WITH SERVICE_NAME =
                           N''//InstDB/2InstSample/InitiatorService'',
                         ADDRESS = N''TCP://MyInitiatorComputer:4022'';';
    
    EXECUTE (@Cmd);
    
    SET @Cmd = N'USE msdb
                    CREATE ROUTE InstTargetRoute
                    WITH SERVICE_NAME =
                            N''//TgtDB/2InstSample/TargetService'',
                         ADDRESS = N''LOCAL''';
    
    EXECUTE (@Cmd);
    GO
    
    GRANT SEND
        ON SERVICE::[//TgtDB/2InstSample/TargetService] TO InitiatorUser;
    GO
    
    CREATE REMOTE SERVICE BINDING InitiatorBinding
        TO SERVICE N'//InstDB/2InstSample/InitiatorService'
        WITH USER = InitiatorUser;
    GO
    

Étape suivante

Vous avez terminé de configurer la base de données cible pour prendre en charge une conversation Service Broker avec la base de données initiatrice. Ensuite, vous commencez une conversation dans la base de données de l’initiateur et envoyez un message de demande au service cible.