Leçon 1 : création des objets de la conversation

Dans cette leçon, vous apprendrez à 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

  • 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 de l'éditeur de requête. Puis, exécutez-le pour créer les types de messages de la conversation. Dans la mesure où les objets Service Broker sont souvent référencés dans plusieurs instances du moteur de base de données, la plupart portent des noms au format URI. Ainsi, leur unicité est garantie sur plusieurs ordinateurs. Ces deux types de messages spécifient que Service Broker valide le fait que les messages sont des documents XML corrects, sans pour autant valider 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 de l'éditeur de requête. Puis, exécutez-le pour créer le contrat de 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 et le service de la cible

  • Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Puis, 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 à TargetQueue1DB. Par conséquent, tous les messages envoyés au service sont reçus dans TargetQueue1DB. L'instruction CREATE SERVICE spécifie également que seules les conversations qui utilisent le //AWDB/1DBSample/SampleContract créé précédemment peuvent utiliser le service comme service de la 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-le 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
    

Étapes suivantes

Vous venez de configurer AdventureWorks2008R2 pour prendre en charge une conversation entre //AWDB/1DBSample/InitiatorService et //AWDB/1DBSample/TargetService. À l'étape suivante, vous allez exécuter une conversation à l'aide de cette configuration. Consultez Leçon 2 : début d'une conversation et transmission de messages.