Partager via


Leçon 2 : Création de la base de données initiatrice

Nouveau : 15 septembre 2007

Dans cette leçon, vous allez apprendre à créer la base de données initiatrice et tous les objets Service Broker côté initiateur utilisés dans ce didacticiel. Réalisez ces procédures à partir d'une copie de Management Studio qui s'exécute sur le même ordinateur que l'instance initiatrice du Moteur de base de données.

Procédures

Créer un point de terminaison Service Broker

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête, puis exécutez-le de manière à créer un point de terminaison Service Broker pour cette instance du Moteur de base de données. Un point de terminaison Service Broker spécifie l'adresse réseau à laquelle les messages Service Broker sont envoyés. Ce point de terminaison utilise le port par défaut de Service Broker qui est le port TCP 4022 et spécifie que les instances distantes du Moteur de base de données utiliseront des connexions avec Authentification Windows pour envoyer des messages.

    L'Authentification Windows fonctionne lorsque les deux ordinateurs se trouvent dans le même domaine ou dans des domaines approuvés. Si les ordinateurs ne se trouvent pas dans des domaines approuvés, utilisez la sécurité de certificat pour les points de terminaison. Pour plus d'informations, consultez Procédure : créer des certificats pour la sécurité du transport Service Broker (Transact SQL).

    USE master;
    GO
    IF EXISTS (SELECT * FROM sys.endpoints
               WHERE name = N'InstInitiatorEndpoint')
         DROP ENDPOINT InstInitiatorEndpoint;
    GO
    CREATE ENDPOINT InstInitiatorEndpoint
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 4022 )
    FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
    GO
    

Créer la base de données initiatrice, la clé principale et l'utilisateur

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête Changez le mot de passe dans l'instruction CREATE MASTER KEY. Exécutez ensuite le code de manière à créer la base de données cible utilisée pour ce didacticiel. Par défaut, l'option ENABLE_BROKER est activée pour les nouvelles bases de données. Ce code crée également la clé principale et l'utilisateur qui seront utilisés pour prendre en charge le chiffrement et les connexions distantes.

    USE master;
    GO
    IF EXISTS (SELECT * FROM sys.databases
               WHERE name = N'InstInitiatorDB')
         DROP DATABASE InstInitiatorDB;
    GO
    CREATE DATABASE InstInitiatorDB;
    GO
    USE InstInitiatorDB;
    GO
    
    CREATE MASTER KEY
           ENCRYPTION BY PASSWORD = N'<EnterStrongPassword2Here>';
    GO
    CREATE USER InitiatorUser WITHOUT LOGIN;
    GO
    

Créer le certificat initiateur

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête Modifiez le nom de fichier spécifié dans l'instruction BACKUP CERTIFICATE de manière à référencer un dossier de votre système. Exécutez ensuite le code de manière à créer le certificat initiateur utilisé pour chiffrer les messages. Le dossier que vous spécifiez doit avoir des autorisations qui empêchent l'accès à partir de comptes autres que votre compte Windows et le compte Windows sous lequel l'instance du Moteur de base de données s'exécute. Pour la Leçon 3, vous devez copier manuellement le fichier InstInitiatorCertificate.cer dans un dossier accessible à partir de l'instance cible.

    CREATE CERTIFICATE InstInitiatorCertificate
         AUTHORIZATION InitiatorUser
         WITH SUBJECT = N'Initiator Certificate',
              EXPIRY_DATE = N'12/31/2010';
    
    BACKUP CERTIFICATE InstInitiatorCertificate
      TO FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstInitiatorCertificate.cer';
    GO
    

Créer les types de messages

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête, puis exécutez-le de manière à créer les types de messages de la conversation. Les noms et propriétés spécifiés ici pour les types de messages doivent être identiques à ceux que vous avez créés dans la base de données InstTargetDB dans la leçon précédente.

    CREATE MESSAGE TYPE [//BothDB/ 2InstSample/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE [//BothDB/ 2InstSample/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

Créer le contrat

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête, puis exécutez-le de manière à créer le contrat de la conversation. Le nom et les propriétés spécifiés ici pour le contrat doivent être identiques à ceux du contrat que vous allez créer dans la base de données InstInitiatorDB dans la leçon suivante.

    CREATE CONTRACT [//BothDB/ 2InstSample/SimpleContract]
          ([//BothDB/ 2InstSample/RequestMessage]
             SENT BY INITIATOR,
           [//BothDB/ 2InstSample/ReplyMessage]
             SENT BY TARGET
          );
    GO
    

Créer la file d'attente et le service côté initiateur

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête, puis exécutez-le de manière à créer la file d'attente et le service utilisés pour la cible. L'instruction CREATE SERVICE associe le service à la file d'attente InstInitiatorQueue. Par conséquent, tous les messages envoyés au service seront reçus dans la file d'attente InstInitiatorQueue. L'instruction CREATE SERVICE spécifie également que seules les conversations qui utilisent le contrat //BothDB/ 2InstSample/SimpleContract qui a été créé précédemment peuvent utiliser le service comme service cible.

    CREATE QUEUE InstInitiatorQueue;
    
    CREATE SERVICE [//InstDB/2InstSample/InitiatorService]
           AUTHORIZATION InitiatorUser
           ON QUEUE InstInitiatorQueue;
    GO
    

Créer des références aux objets cibles

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête. Modifiez la clause FILE FROM de manière à référencer le dossier dans lequel vous avez copié le fichier InstInitiatorCertficate.cer de l'étape 3 de la Leçon 1. Exécutez ensuite le code de manière à créer un utilisateur cible et à extraire le certificat cible.

    CREATE USER TargetUser WITHOUT LOGIN;
    
    CREATE CERTIFICATE InstTargetCertificate 
       AUTHORIZATION TargetUser
       FROM FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer'
    GO
    

Créer les itinéraires

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête. Remplacez le chaîne MyTargetComputer par le nom de l'ordinateur qui exécute votre instance cible. Exécutez ensuite le code de manière à créer des itinéraires vers le service cible et le service initiateur, de même qu'une liaisons de service distant qui associe TargetUser à l'itinéraire du service initiateur.

    Dans les instructions CREATE ROUTE suivantes, il est supposé que l'instance cible ne contient aucun nom de service dupliqué. Si plusieurs bases de données sur l'instance cible contiennent des services portant le même nom, utilisez la clause BROKER_INSTANCE pour spécifier la base de données sur laquelle vous souhaitez ouvrir une conversation.

    DECLARE @Cmd NVARCHAR(4000);
    
    SET @Cmd = N'USE InstInitiatorDB;
    CREATE ROUTE InstTargetRoute
    WITH SERVICE_NAME =
           N''//TgtDB/2InstSample/TargetService'',
         ADDRESS = N''TCP://MyTargetComputer:4022'';';
    
    EXEC (@Cmd);
    
    SET @Cmd = N'USE msdb
    CREATE ROUTE InstInitiatorRoute
    WITH SERVICE_NAME =
           N''//InstDB/2InstSample/InitiatorService'',
         ADDRESS = N''LOCAL''';
    
    EXEC (@Cmd);
    GO
    CREATE REMOTE SERVICE BINDING TargetBinding
          TO SERVICE
             N'//TgtDB/2InstSample/TargetService'
          WITH USER = TargetUser;
    
    GO
    

Étapes suivantes

Vous avez créé les bases de données initiatrices qui seront utilisées pour ce didacticiel. Ensuite, vous allez terminer la configuration de la base de données cible en créant les objets cibles qui ont des dépendances vis-à-vis des objets côté initiateur. Consultez Leçon 3 : Création des objets de conversation côté cible.

Voir aussi

Autres ressources

BACKUP CERTIFICATE (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE MASTER KEY (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE REMOTE SERVICE BINDING (Transact-SQL)
CREATE ROUTE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE USER (Transact-SQL)
EXECUTE (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
Sécurité du dialogue Service Broker
Architecture des conversations
Architecture du service

Aide et Informations

Assistance sur SQL Server 2005