如何創(chuàng )建目標數據庫
在文您將學(xué)習創(chuàng )建目標數據庫和所有與發(fā)起方數據庫不存在依賴(lài)關(guān)系的 Service Broker 目標對象。從與數據庫引擎目標實(shí)例運行在同一臺計算機上的 Management Studio 副本中執行這些步驟。
復制以下代碼并將其粘貼到查詢(xún)編輯器窗口中。然后,運行代碼為此數據庫引擎實(shí)例創(chuàng )建 Service Broker 端點(diǎn)。Service Broker 端點(diǎn)建立了 Service Broker 消息發(fā)送到的網(wǎng)絡(luò )地址。該端點(diǎn)使用 Service Broker 默認 TCP 端口 4022,建立將使用 Windows 身份驗證連接來(lái)發(fā)送消息的數據庫引擎遠程實(shí)例。
Windows 身份驗證在兩臺計算機處于相同的域或可信任域中時(shí)有效。如果計算機不在可信任的域中,請將證書(shū)安全設置用于端點(diǎn)。
復制代碼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
復制以下代碼并將其粘貼到查詢(xún)編輯器窗口中。在 CREATE MASTER KEY 語(yǔ)句中更改密碼。然后,運行代碼以創(chuàng )建用于本教程的目標數據庫。默認情況下,新數據庫將 ENABLE_BROKER 選項設置為 ON。該代碼還會(huì )創(chuàng )建用于支持加密和遠程連接的主密鑰和用戶(hù)。
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
復制以下代碼并將其粘貼到查詢(xún)編輯器窗口中。更改 BACKUP CERTIFICATE 語(yǔ)句中指定的文件名,以引用系統中的某個(gè)文件夾。然后,運行代碼來(lái)創(chuàng )建用于加密消息的目標證書(shū)。您指定的文件夾的權限設置應當只允許您的 Windows 帳戶(hù)和用于運行數據庫引擎實(shí)例的 Windows 帳戶(hù)訪(fǎng)問(wèn)該文件夾,其他帳戶(hù)一概不能訪(fǎng)問(wèn)。為了進(jìn)行第 2 課,必須手動(dòng)將 InstTargetCertificate.cer 文件復制到可從發(fā)起方實(shí)例訪(fǎng)問(wèn)的文件夾。
CREATE CERTIFICATE InstTargetCertificate AUTHORIZATION TargetUser WITH SUBJECT = 'Target Certificate', EXPIRY_DATE = N'12/31/2010'; BACKUP CERTIFICATE InstTargetCertificate TO FILE = N'C:storedcerts$ampleSSBCertsInstTargetCertificate.cer'; GO
復制以下代碼并將其粘貼到查詢(xún)編輯器窗口,然后運行代碼為會(huì )話(huà)創(chuàng )建消息類(lèi)型。此處指定的消息類(lèi)型名稱(chēng)和屬性必須與下一課在 InstInitiatorDB 中創(chuàng )建的消息類(lèi)型名稱(chēng)和屬性相同。
CREATE MESSAGE TYPE [//BothDB/2InstSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//BothDB/2InstSample/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
復制以下代碼并將其粘貼到查詢(xún)編輯器窗口中。然后,運行代碼為會(huì )話(huà)創(chuàng )建約定。此處指定的約定名稱(chēng)和屬性必須與下一課在 InstInitiatorDB 中創(chuàng )建的約定名稱(chēng)和屬性相同。
CREATE CONTRACT [//BothDB/2InstSample/SimpleContract] ([//BothDB/2InstSample/RequestMessage] SENT BY INITIATOR, [//BothDB/2InstSample/ReplyMessage] SENT BY TARGET ); GO
復制以下代碼并將其粘貼到查詢(xún)編輯器窗口中。然后,運行代碼以創(chuàng )建要用于目標的隊列和服務(wù)。CREATE SERVICE 語(yǔ)句將該服務(wù)與 InstTargetQueue 相關(guān)聯(lián),以便將所有發(fā)送到該服務(wù)的消息接收到 InstTargetQueue 中。CREATE SERVICE 還指定只有使用先前創(chuàng )建的 //BothDB/ 2InstSample/SimpleContract 的會(huì )話(huà)才能將該服務(wù)用作目標服務(wù)。
復制代碼CREATE QUEUE InstTargetQueue; CREATE SERVICE [//TgtDB/2InstSample/TargetService] AUTHORIZATION TargetUser ON QUEUE InstTargetQueue ([//BothDB/2InstSample/SimpleContract]); GO
您已經(jīng)成功創(chuàng )建了將要用于本教程的數據庫。接下來(lái),將創(chuàng )建 InstInitiatorDB 并使用支持 Service Broker 會(huì )話(huà)發(fā)起方端點(diǎn)所需的對象來(lái)配置它。
評論