Leçon 1 : Créer les objets de conversation

S’applique à :SQL ServerAzure SQL Managed Instance

Dans cette leçon, vous allez apprendre à générer tous les objets qui permettent à une base de données de prendre en charge une conversation dans la base de données.

Procédures

Activer Service Broker et basculer vers la base de données AdventureWorks2008R2

Remarque

Les exemples de code de cet article ont été testés à l’aide de l’exemple de base de données AdventureWorks2025, que vous pouvez télécharger à partir de la Microsoft SQL Server Samples and Community Projects page d’accueil.

  • Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Puis, exécutez-le pour vous assurer que Service Broker est activé dans la base de données AdventureWorks2008R2 et basculez le contexte vers la base de données.

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

Créer les types de messages

  • Copiez et collez le code suivant dans une fenêtre éditeur de requête, puis exécutez-la pour créer les types de messages pour la conversation. Comme les objets Service Broker sont souvent référencés dans plusieurs instances du Moteur de base de données, la plupart des objets Service Broker portent des noms dans un format URI. Cela permet de s’assurer qu’ils sont uniques sur plusieurs ordinateurs. Ces deux types de messages spécifient que Service Broker valide uniquement que les messages sont des documents XML bien formés et qu’ils ne valident pas le code XML par rapport à un schéma spécifique.

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

Créer le contrat

  • Copiez et collez le code suivant dans une fenêtre éditeur de requête, puis exécutez-la pour créer le contrat pour la conversation. Le contrat spécifie que les conversations qui l'utilisent doivent envoyer des messages de type //AWDB/1DBSample/RequestMessage de l'initiateur à la cible et des messages de type //AWDB/1DBSample/ReplyMessage de la cible à l'initiateur.

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

Créer la file d'attente cible et le service

  • Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Ensuite, exécutez-le pour créer la file d’attente et le service utilisés pour la cible. Les files d'attente étant référencées à partir de la même base de données comme des tables et des vues, leurs noms sont mis en forme comme des noms de table ou de vue. L’instruction CREATE SERVICE associe le service au TargetQueue1DB. Par conséquent, tous les messages envoyés au service seront reçus dans le TargetQueue1DB. Spécifie CREATE SERVICE également que seules les conversations qui utilisent AWDB/1DBSample/SampleContract créées précédemment peuvent utiliser le service en tant que service cible.

    CREATE QUEUE TargetQueue1DB;
    
    CREATE SERVICE [//AWDB/1DBSample/TargetService]
        ON QUEUE TargetQueue1DB
        ([//AWDB/1DBSample/SampleContract]);
    GO
    

Créer la file d’attente et le service de l’initiateur

  • Copiez et collez le code suivant dans une fenêtre de l’Éditeur de requête, puis exécutez-la pour créer la file d’attente et le service utilisés pour l’initiateur. Comme aucun nom de contrat n'est spécifié, aucun autre service ne peut utiliser ce service comme service de la cible.

    CREATE QUEUE InitiatorQueue1DB;
    
    CREATE SERVICE [//AWDB/1DBSample/InitiatorService]
        ON QUEUE InitiatorQueue1DB;
    GO
    

Étape suivante

Vous avez correctement configuré AdventureWorks2008R2 pour prendre en charge une conversation entre AWDB/1DBSample/InitiatorService et AWDB/1DBSample/TargetService. Ensuite, vous terminez une conversation à l’aide de la configuration.