Lezione 1: Creazione del database di destinazione
In questa lezione verranno descritte le procedure per creare il database di destinazione e tutti gli oggetti di destinazione Service Broker che non hanno relazioni di dipendenza con il database dell'initiator. Eseguire questi passaggi da una copia di Management Studio in esecuzione nello stesso computer come istanza di destinazione di Motore di database.
Procedure
Creazione di un endpoint di Service Broker
Copiare e incollare il codice seguente in una finestra dell'editor di query. Eseguire quindi il codice per creare un endpoint di Service Broker per questa istanza di Motore di database. Un endpoint di Service Broker definisce l'indirizzo di rete a cui vengono inviati i messaggi di Service Broker. L'endpoint utilizza il valore predefinito 4022 di Service Broker per la porta TCP e stabilisce che le istanze remote di Motore di database utilizzeranno connessioni con autenticazione di Windows per inviare messaggi.
È possibile utilizzare l'autenticazione di Windows quando entrambi i computer si trovano nello stesso dominio o in domini trusted. Se i computer non si trovano in domini trusted, utilizzare la protezione dei certificati per gli endpoint. Per ulteriori informazioni, vedere Procedura: Creazione di certificati per la protezione del trasporto di 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
Creazione del database di destinazione, della chiave master e dell'utente
Copiare e incollare il codice seguente in una finestra dell'editor di query. Modificare la password nell'istruzione CREATE MASTER KEY. Eseguire quindi il codice per creare il database di destinazione utilizzato per l'esercitazione. Per impostazione predefinita, l'opzione ENABLE_BROKER è attivata per i nuovi database. Il codice crea inoltre la chiave master e l'utente da utilizzare per supportare la crittografia e le connessioni remote.
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
Creazione del certificato di destinazione
Copiare e incollare il codice seguente in una finestra dell'editor di query. Modificare il nome file specificato nell'istruzione BACKUP CERTIFICATE per fare riferimento a una cartella del sistema. Eseguire quindi il codice per creare il certificato di destinazione utilizzato per crittografare i messaggi. Alla cartella specificata devono essere assegnate le autorizzazioni necessarie per impedire l'accesso ad account diversi dall'account di Windows dell'utente e dall'account di Windows utilizzato per l'esecuzione dell'istanza di Motore di database. Ai fini della lezione 2, è necessario copiare manualmente il file InstTargetCertificate.cer in una cartella a cui possa accedere l'istanza dell'initiator.
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
Creazione dei tipi di messaggio
Copiare e incollare il codice seguente in una finestra dell'editor di query e quindi eseguirlo per creare i tipi di messaggio per la conversazione. I nomi e le proprietà dei tipi di messaggio specificati a questo punto devono essere identici a quelli che verranno creati in InstInitiatorDB nella lezione successiva.
CREATE MESSAGE TYPE [//BothDB/2InstSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//BothDB/2InstSample/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
Creazione del contratto
Copiare e incollare il codice seguente in una finestra dell'editor di query. Eseguire quindi il codice per creare il contratto per la conversazione. Il nome e le proprietà del contratto specificati a questo punto devono essere identici a quelli del contratto che verrà creato in InstInitiatorDB nella lezione successiva.
CREATE CONTRACT [//BothDB/2InstSample/SimpleContract] ([//BothDB/2InstSample/RequestMessage] SENT BY INITIATOR, [//BothDB/2InstSample/ReplyMessage] SENT BY TARGET ); GO
Creazione della coda e del servizio di destinazione
Copiare e incollare il codice seguente in una finestra dell'editor di query. Eseguire quindi il codice per creare la coda e il servizio utilizzati per la destinazione. L'istruzione CREATE SERVICE associa il servizio a InstTargetQueue, in modo che tutti i messaggi inviati al servizio vengano ricevuti in InstTargetQueue. L'istruzione CREATE SERVICE specifica inoltre che solo le conversazioni che utilizzano il contratto //BothDB/2InstSample/SimpleContract creato in precedenza possono utilizzare il servizio come servizio di destinazione.
CREATE QUEUE InstTargetQueue; CREATE SERVICE [//TgtDB/2InstSample/TargetService] AUTHORIZATION TargetUser ON QUEUE InstTargetQueue ([//BothDB/2InstSample/SimpleContract]); GO
Passaggi successivi
Sono stati creati correttamente i database che verranno utilizzati per l'esercitazione. Nel passaggio successivo si creerà il database InstInitiatorDB e lo si configurerà con gli oggetti necessari per supportare il lato initiator di una conversazione di Service Broker. Vedere Lezione 2: Creazione del database dell'initiator.
Vedere anche