Leçon 1 : Création de la base de données cible
Nouveau : 15 septembre 2007
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 vis-à-vis de la base de données initiatrice. Réalisez ces procédures à 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 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 établit 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 établit 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 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 cible, la clé principale et l'utilisateur
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'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 cible
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 cible 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 2, vous devez copier manuellement le fichier InstTargetCertificate.cer dans un dossier accessible à partir de l'instance initiatrice.
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 d'éditeur de requête, puis exécutez-le de manière à créer les types de messages pour la conversation. Les noms et propriétés spécifiés ici pour les types de messages doivent être identiques à ceux que vous allez créer dans la base de données InstInitiatorDB dans la 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 d'éditeur de requête, puis exécutez-le de manière à créer le contrat de la conversation. Les 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é cible
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 InstTargetQueue, afin que tous les messages envoyés au service soient reçus dans cette file d'attente. 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 InstTargetQueue; CREATE SERVICE [//TgtDB/2InstSample/TargetService] AUTHORIZATION TargetUser ON QUEUE InstTargetQueue ([//BothDB/2InstSample/SimpleContract]); GO
Étapes suivantes
Vous avez créé les bases de données qui seront utilisées pour ce didacticiel. Vous allez maintenant créer la base de données InstInitiatorDB et la configurer avec les objets requis pour prendre en charge l'extrémité initiateur d'une conversation Service Broker . Consultez Leçon 2 : Création de la base de données initiatrice.
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 SERVICE (Transact-SQL)
CREATE USER (Transact-SQL)
Sécurité du dialogue Service Broker
Architecture des conversations
Architecture du service