Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Managed Instance
Dans cette leçon, vous allez apprendre à créer la base de données de l’initiateur et tous les objets Service Broker initiateurs utilisés dans ce tutoriel. Exécutez ces étapes à partir d’une copie de Management Studio exécutée 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
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 spécifie l’adresse réseau à laquelle les messages Service Broker sont envoyés. Le point de terminaison utilise le port TCP 4022 Service Broker par défaut et spécifie que les instances distantes du moteur de base de données doivent utiliser des connexions d’authentification Windows pour envoyer des messages.
L’authentification Windows fonctionne lorsque les deux ordinateurs se trouvent dans le même domaine ou se trouvent 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 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, la clé principale et l'utilisateur de l'initiateur
Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Modifiez le mot de passe de l’instruction
CREATE MASTER KEY, puis exécutez le code pour créer la base de données cible utilisée pour ce didacticiel. Par défaut, les nouvelles bases de données ont laENABLE_BROKERvaleur 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'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 de l'initiateur
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 CERTIFICATEpour faire référence à un dossier sur votre système. Ensuite, exécutez le code pour créer le certificat initiateur 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 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
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 qui ont été créés dans la
InstTargetDBleç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
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
InstInitiatorDBleç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 l'initiateur
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 SERVICEassocie le service à InstInitiatorQueue. Par conséquent, tous les messages envoyés au service sont reçus dans InstInitiatorQueue. SpécifieCREATE SERVICEégalement que seules les conversations qui utilisent BothDB/ 2InstSample/SimpleContract créée précédemment peuvent utiliser le service en tant que service cible.CREATE QUEUE InstInitiatorQueue; CREATE SERVICE [//InstDB/2InstSample/InitiatorService] AUTHORIZATION InitiatorUser ON QUEUE InstInitiatorQueue; GO
Créer des références aux objets de la cible
Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Modifiez la
FROM FILEclause pour référencer le dossier dans lequel vous avez copié le fichier InstTargetCertificate.cer à l’étape 3 de la leçon 1. Puis, exécutez le code pour créer un utilisateur de la cible et extraire le certificat de la cible.CREATE USER TargetUser WITHOUT LOGIN; CREATE CERTIFICATE InstTargetCertificate AUTHORIZATION TargetUser FROM FILE = N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer'; GO
Créer des itinéraires
Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Définissez la chaîne MyTargetComputer sur le nom de l’ordinateur qui exécute votre instance cible. Ensuite, exécutez le code pour créer des routes vers le service cible et le service initiateur, et une liaison de service distant qui associe TargetUser à la route du service cible.
Les instructions suivantes
CREATE ROUTEsupposent qu’il n’existe aucun nom de service en double dans l’instance cible. Si plusieurs bases de données sur l’instance cible ont des services portant le même nom, utilisez laBROKER_INSTANCEclause pour spécifier la base de données sur laquelle vous souhaitez ouvrir une conversation.DECLARE @Cmd AS NVARCHAR (4000); SET @Cmd = N'USE InstInitiatorDB; CREATE ROUTE InstTargetRoute WITH SERVICE_NAME = N''//TgtDB/2InstSample/TargetService'', ADDRESS = N''TCP://MyTargetComputer:4022'';'; EXECUTE (@Cmd); SET @Cmd = N'USE msdb CREATE ROUTE InstInitiatorRoute WITH SERVICE_NAME = N''//InstDB/2InstSample/InitiatorService'', ADDRESS = N''LOCAL'''; EXECUTE (@Cmd); GO CREATE REMOTE SERVICE BINDING TargetBinding TO SERVICE N'//TgtDB/2InstSample/TargetService' WITH USER = TargetUser; GO
Tâches associées
- BACKUP CERTIFICATE (Transact-SQL)
- CREATE CERTIFICATE (Transact-SQL)
- CREATE CONTRACT (Transact-SQL)
- CRÉER BASE DE DONNÉES
- CRÉER UN POINT D'ACCÈS (Transact-SQL)
- CREATE MASTER KEY (Transact-SQL)
- CREATE MESSAGE TYPE (Transact-SQL) - Commande pour créer un type de message dans SQL Server.
- CREATE QUEUE (Transact-SQL)
- CRÉER UNE LIAISON DE SERVICE À DISTANCE (Transact-SQL)
- CREATE ROUTE (Transact-SQL)
- CREATE SERVICE (Transact-SQL)
- CRÉER UN UTILISATEUR (Transact-SQL)
- EXECUTE (Transact-SQL)
- sp_addlinkedserver (Transact-SQL)
- Sécurité de la boîte de dialogue Service Broker
- Architecture de conversation
- Architecture de service
Étape suivante
Vous avez créé les bases de données de l’initiateur pour le didacticiel. Ensuite, vous avez terminé de configurer la base de données cible en créant les objets cibles qui ont des dépendances sur les objets initiateurs.