第 2 課:建立起始端資料庫
新增: 2007 年 9 月 15 日
在本課程中,您將學習建立要在本教學課程中使用的起始端資料庫和所有起始端 Service Broker 物件。您要從正在同一部電腦上當做 Database Engine 起始端執行個體執行的 Management Studio 副本中執行這些步驟。
程序
建立 Service Broker 端點
複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可這個 Database Engine 執行個體建立 Service Broker 端點。Service Broker 端點會指定傳送 Service Broker 訊息的目的網路位址。這個端點會使用 TCP 通訊埠 4022 的 Service Broker 預設值,並指定 Database Engine 遠端執行個體將使用 Windows 驗證連接來傳送訊息。
Windows 驗證適用於兩部電腦都位在相同網域或信任網域中的情況。如果電腦不是在信任網域中,請對該端點使用憑證安全性。如需詳細資訊,請參閱<如何:建立 Service Broker 傳輸安全性的憑證 (Transact-SQL)>。
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
建立起始端資料庫、主要金鑰和使用者
複製下列程式碼並在 [查詢編輯器] 視窗中貼上,變更 CREATE MASTER KEY 陳述式上的密碼。然後執行此程式碼,即可建立本教學課程要使用的目標資料庫。依預設,新的資料庫會將 ENABLE_BROKER 選項設為開啟。程式碼也會建立用來支援加密及遠端連接的主要金鑰和使用者。
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
建立起始端憑證
複製下列程式碼並在 [查詢編輯器] 視窗中貼上,變更 BACKUP CERTIFICATE 陳述式中指定的檔案名稱,改以參考您系統上的資料夾。然後執行此程式碼,即可建立用來加密訊息的起始端憑證。您所指定的資料夾必須擁有權限,可防止您的 Windows 帳戶及 Database Engine 執行個體執行使用的 Windows 帳戶以外的帳戶來存取。在第 3 課中,您必須手動將 InstInitiatorCertificate.cer 檔案複製到可從目標執行個體存取的資料夾。
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
建立訊息類型
複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可建立交談的訊息類型。此處指定的訊息類型名稱和屬性必須與您已在上一課 InstTargetDB 中建立的完全相同。
CREATE MESSAGE TYPE [//BothDB/ 2InstSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//BothDB/ 2InstSample/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
建立合約
複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可建立交談的合約。此處指定的合約名稱和屬性必須與您要在下一課 InstInitiatorDB 中建立的合約完全相同。
CREATE CONTRACT [//BothDB/ 2InstSample/SimpleContract] ([//BothDB/ 2InstSample/RequestMessage] SENT BY INITIATOR, [//BothDB/ 2InstSample/ReplyMessage] SENT BY TARGET ); GO
建立起始端佇列和服務
複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可建立用來做為目標的佇列和服務。CREATE SERVICE 陳述式會使服務與 InstInitiatorQueue 產生關聯。因此,傳送至服務的所有訊息都會在 InstInitiatorQueue 中收到。CREATE SERVICE 也會指定,只有使用您先前建立之 //BothDB/ 2InstSample/SimpleContract 的交談,才可以使用此服務做為目標服務。
CREATE QUEUE InstInitiatorQueue; CREATE SERVICE [//InstDB/2InstSample/InitiatorService] AUTHORIZATION InitiatorUser ON QUEUE InstInitiatorQueue; GO
建立目標物件的參考
複製下列程式碼並在 [查詢編輯器] 視窗中貼上。變更 FROM FILE 子句,改以參考您要從第 1 課步驟 3 將 InstTargetCertficate.cer 檔案複製到的資料夾。然後,執行此程式碼,即可在目標憑證中建立目標使用者和提取。
CREATE USER TargetUser WITHOUT LOGIN; CREATE CERTIFICATE InstTargetCertificate AUTHORIZATION TargetUser FROM FILE = N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer' GO
建立路由
複製下列程式碼並在 [查詢編輯器] 視窗中貼上。將字串 MyTargetComputer 變更為正在執行目標執行個體的電腦名稱。然後,執行此程式碼,即可建立指向目標服務和起始端服務的路由,以及建立可將 TargetUser 與目標服務路由產生關聯的遠端服務繫結。
下列 CREATE ROUTE 陳述式會假設目標執行個體中沒有重複的服務名稱。如果目標執行個體上的多個資料庫中有相同名稱的服務,請使用 BROKER_INSTANCE 子句來指定您要開啟交談所在的資料庫。
DECLARE @Cmd NVARCHAR(4000); SET @Cmd = N'USE InstInitiatorDB; CREATE ROUTE InstTargetRoute WITH SERVICE_NAME = N''//TgtDB/2InstSample/TargetService'', ADDRESS = N''TCP://MyTargetComputer:4022'';'; EXEC (@Cmd); SET @Cmd = N'USE msdb CREATE ROUTE InstInitiatorRoute WITH SERVICE_NAME = N''//InstDB/2InstSample/InitiatorService'', ADDRESS = N''LOCAL'''; EXEC (@Cmd); GO CREATE REMOTE SERVICE BINDING TargetBinding TO SERVICE N'//TgtDB/2InstSample/TargetService' WITH USER = TargetUser; GO
後續的步驟
您已成功建立教學課程要使用的起始端資料庫。接下來,您將會建立相依於起始端物件的目標物件,以完成目標資料庫的設定。請參閱<第 3 課:完成目標交談物件>。
請參閱
其他資源
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 REMOTE SERVICE BINDING (Transact-SQL)
CREATE ROUTE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE USER (Transact-SQL)
EXECUTE (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
Service Broker 對話安全性
交談架構
服務架構