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