Lezione 1: Creazione del database di destinazione
Data creazione: 15 settembre 2007
In questa lezione saranno illustrate le procedure per creare il database di destinazione e tutti gli oggetti di destinazione di Service Broker privi di dipendenze dal database initiator. Eseguire questi passaggi da una copia di Management Studio in esecuzione nello stesso computer dell'istanza di destinazione di Motore di database.
Procedure
Creare un endpoint di Service Broker
Copiare e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per creare un endpoint di Service Broker per questa istanza di Motore di database. Un endpoint di Service Broker determina l'indirizzo di rete al quale sono inviati i messaggi di Service Broker. Questo endpoint utilizza la porta TCP predefinita, 4022, di Service Broker e stabilisce che le istanze remote di Motore di database utilizzeranno le connessioni di Autenticazione di Windows per inviare messaggi.
Autenticazione di Windows funziona quando entrambi i computer appartengono allo stesso dominio o a domini attendibili. Se i computer non sono in domini attendibili, utilizzare la protezione del certificato 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
Creare il database di destinazione, la chiave master e l'utente
Copiare e incollare il codice seguente in una finestra dell'editor di query. Modificare la password nell'istruzione CREATE MASTER KEY, quindi eseguire il codice per creare il database di destinazione utilizzato per questa esercitazione. Nei nuovi database l'opzione ENABLE_BROKER è attivata per impostazione predefinita. Il codice crea anche la chiave master e l'utente che saranno utilizzati 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
Creare il 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. Quindi eseguire il codice per creare il certificato di destinazione utilizzato per crittografare i messaggi. È necessario specificare una cartella che disponga di autorizzazioni che impediscono l'accesso da account diversi dall'account di Windows in uso e dall'account di Windows con il quale è in esecuzione l'istanza di Motore di database. Per la lezione 2 è necessario copiare manualmente il file InstTargetCertificate.cer in una cartella a cui è possibile accedere dall'istanza 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
Creare i tipi di messaggio
Copiare e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per creare i tipi di messaggio relativi alla conversazione. I nomi e le proprietà dei tipi di messaggio specificati devono essere identici a quelli che verranno creati nel database 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
Creare il contratto
Copiare e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per creare il contratto relativo alla conversazione. Il nome e le proprietà del contratto specificati devono essere identici al contratto che sarà creato in InstInitiatorDB nella lezione successiva.
CREATE CONTRACT [//BothDB/ 2InstSample/SimpleContract] ([//BothDB/ 2InstSample/RequestMessage] SENT BY INITIATOR, [//BothDB/ 2InstSample/ReplyMessage] SENT BY TARGET ); GO
Creare la coda e il servizio di destinazione
Copiare e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per creare la coda e il servizio utilizzato per la destinazione. L'istruzione CREATE SERVICE associa il servizio alla coda InstTargetQueue in modo che tutti i messaggi inviati al servizio siano ricevuti in InstTargetQueue. L'istruzione CREATE SERVICE specifica inoltre che possono utilizzare il servizio come servizio di destinazione solo le conversazioni che utilizzano il contratto //BothDB/ 2InstSample/SimpleContract creato in precedenza.
CREATE QUEUE InstTargetQueue; CREATE SERVICE [//TgtDB/2InstSample/TargetService] AUTHORIZATION TargetUser ON QUEUE InstTargetQueue ([//BothDB/2InstSample/SimpleContract]); GO
Passaggi successivi
Sono stati creati i database che saranno utilizzati per l'esercitazione. Nel passaggio successivo verrà creato e configurato il database InstInitiatorDB con gli oggetti necessari per supportare l'estremità di origine di una conversazione Service Broker. Vedere Lezione 2: Creazione del database initiator.
Vedere anche
Altre risorse
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)
Protezione del dialogo di Service Broker
Architettura delle conversazioni
Architettura dei servizi