第 1 課:建立目標資料庫
適用於:SQL ServerAzure SQL 受控執行個體
在本課程中,您將學會如何建立目標資料庫以及沒有起始端資料庫相依性的所有 Service Broker 目標物件。 請使用與目標資料庫引擎執行個體在同一部電腦上執行的 Management Studio 複本執行這些步驟。
程序
建立 Service Broker 端點
將下列程式碼複製並貼入 [查詢編輯器] 視窗中。 然後,執行它以為此資料庫引擎執行個體建立 Service Broker 端點。 Service Broker 端點會建立 Service Broker 訊息傳送目標的網路位址。 這個端點會使用 Service Broker 預設的 TCP 連接埠 4022,並確立資料庫引擎的遠端執行個體會使用 Windows 驗證連線來傳送訊息。
當這兩部電腦都位於相同的網域或受信任網域時,Windows 驗證就會運作。 如果這些電腦不在受信任網域中,請使用端點的憑證安全性。 如需詳細資訊,請參閱如何:建立 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
建立目標資料庫、主要金鑰和使用者
將下列程式碼複製並貼入 [查詢編輯器] 視窗中。 變更 CREATE MASTER KEY 陳述式上的密碼。 然後,執行此程式碼以便建立用於此教學課程的目標資料庫。 根據預設,新的資料庫會將 ENABLE_BROKER 選項設定為開啟。 此外,這個程式碼也會建立用來支援加密和遠端連接的主要金鑰和使用者。
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
建立目標憑證
將下列程式碼複製並貼入 [查詢編輯器] 視窗中。 將 BACKUP CERTIFICATE 陳述式中指定的檔案名稱變更為參考您系統上的資料夾。 然後,執行此程式碼以便建立用來加密訊息的目標憑證。 您指定的資料夾應有權阻止除您 Windows 帳戶和執行資料庫引擎執行個體的 Windows 帳戶以外的帳戶存取。 為了讓第 2 課順利進行,您必須手動將 InstTargetCertificate.cer檔案複製到可從起始端執行個體存取的資料夾中。
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
建立訊息類型
將下列程式碼複製並貼入 [查詢編輯器] 視窗中。然後,執行此程式碼以便建立交談的訊息類型。 這裡指定的訊息類型名稱和屬性必須與您要在下一課之 InstInitiatorDB 中建立的項目完全相同。
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 陳述式會建立服務與 InstTargetQueue 的關聯性,以便 InstTargetQueue 能接收所有傳送至該服務的訊息。 CREATE SERVICE 也會指定只有使用先前建立之 //BothDB/ 2InstSample/SimpleContract 的交談,才能使用該服務當做目標服務。
CREATE QUEUE InstTargetQueue; CREATE SERVICE [//TgtDB/2InstSample/TargetService] AUTHORIZATION TargetUser ON QUEUE InstTargetQueue ([//BothDB/2InstSample/SimpleContract]); GO
後續步驟
您已成功建立將用於本教學課程的資料庫。 接下來,您要建立 InstInitiatorDB,並使用支援 Service Broker 交談起始端的必要物件來設定它。 如需詳細資訊,請參閱第 2 課:建立起始端資料庫。
另請參閱
- BACKUP CERTIFICATE (Transact-SQL)
- CREATE CERTIFICATE (Transact-SQL)
- CREATE CONTRACT (Transact-SQL)CREATE DATABASE
- 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)
- Service Broker 對話安全性
- 交談架構
- 服務架構
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應