Leçon 1 : Créer la base de données cible

S’applique à :SQL ServerAzure SQL Managed Instance

Dans cette leçon, vous allez apprendre à créer la base de données cible et tous les objets cibles Service Broker qui n’ont pas de dépendances sur la base de données initiateur. Exécutez ces étapes à partir d’une copie de Management Studio qui s’exécute sur le même ordinateur que l’instance cible du moteur de base de données.

Procédures

Créer un point de terminaison Service Broker

  • Copiez et collez le code suivant dans une fenêtre éditeur de requête, puis exécutez-la pour créer un point de terminaison Service Broker pour cette instance du moteur de base de données. Un point de terminaison Service Broker établit l’adresse réseau à laquelle les messages Service Broker sont envoyés. Ce point de terminaison utilise le port TCP Service Broker par défaut 4022 et spécifie que les instances distantes du moteur de base de données doivent utiliser 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é des certificats pour les points de terminaison. Pour plus d’informations, consultez Guide pratique pour créer des certificats pour la sécurité de transport Service Broker.

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

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

  • Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Modifiez le mot de passe sur l’instruction CREATE MASTER KEY . Puis, exécutez le code pour créer la base de données de la cible utilisée pour ce didacticiel. Par défaut, les nouvelles bases de données ont la ENABLE_BROKER valeur activée. Le code crée également la clé principale et l'utilisateur qui seront utilisés pour prendre en charge le chiffrement et les connexions à distance.

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

Créer le certificat de la cible

  • Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Modifiez le nom de fichier spécifié dans l’instruction BACKUP CERTIFICATE pour faire référence à un dossier sur votre système. Ensuite, exécutez le code pour créer le certificat cible utilisé pour chiffrer les messages. Le dossier spécifié doit avoir des autorisations qui interdisent l’accès des comptes autres que votre compte Windows et que le compte Windows sous lequel l’instance du moteur de base de données s’exécute. Pour la leçon 2, vous devez copier manuellement le fichier InstTargetCertificate.cer dans un dossier accessible à partir de l’instance de l’initiateur.

    CREATE CERTIFICATE InstTargetCertificate
        AUTHORIZATION TargetUser
        WITH SUBJECT = 'Target Certificate',
            EXPIRY_DATE = N'12/31/2010';
    
    BACKUP CERTIFICATE InstTargetCertificate
        TO FILE = N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer';
    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. Les noms et propriétés de type de message spécifiés ici doivent être identiques à ceux que vous créez dans la InstInitiatorDB leçon suivante.

    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

  • 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 nom et les propriétés du contrat spécifiés ici doivent être identiques au contrat que vous créez dans la InstInitiatorDB 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 de la cible

  • Copiez et collez le code suivant dans une fenêtre éditeur de requête, puis exécutez-la pour créer la file d’attente et le service utilisés pour la cible. L’instruction CREATE SERVICE associe le service à InstTargetQueue afin que tous les messages envoyés au service soient reçus dans InstTargetQueue. Spécifie CREATE SERVICE également que seules les conversations qui utilisent BothDB/ 2InstSample/SimpleContract créées précédemment peuvent utiliser le service en tant que service cible.

    CREATE QUEUE InstTargetQueue;
    
    CREATE SERVICE [//TgtDB/2InstSample/TargetService]
        AUTHORIZATION TargetUser
        ON QUEUE InstTargetQueue
        ([//BothDB/2InstSample/SimpleContract]);
    GO
    

Étape suivante

Vous avez créé les bases de données pour le didacticiel. Ensuite, vous créez et configurez-le InstInitiatorDB avec les objets nécessaires pour prendre en charge la fin de l’initiateur d’une conversation Service Broker.