共用方式為


設定事件通知的對話框安全性

您應該針對向遠端伺服器上的服務訊息代理程式傳送訊息的事件通知,設定 Service Broker 的對話安全性。 對話安全性必須根據 Service Broker 對話框的完整安全性模型手動設定。 完整安全性模型可對傳送至遠端伺服器和從遠端伺服器傳送的訊息進行加密和解密。 雖然事件通知會以一個方向傳送,但其他訊息,例如錯誤,也會以相反的方向傳回。

設定事件通知的對話框安全性

下列步驟說明實作事件通知對話安全性所需的程式。 這些步驟包括在來源伺服器和目標伺服器上執行的操作。 來源伺服器是正在建立事件通知的伺服器。 目標伺服器是接收事件通知訊息的伺服器。 您必須先完成來源伺服器和目標伺服器的每個步驟中的動作,才能繼續進行下一個步驟。

這很重要

所有憑證都必須以有效的開始和到期日建立。

步驟 1:建立 TCP 通訊埠號碼和目標服務名稱。

建立來源伺服器和目標伺服器將接收訊息的 TCP 連接埠。 您也必須判斷目標服務的名稱。

步驟 2:設定資料庫層級驗證的加密和憑證共用。

在來源和目標伺服器上完成下列動作。

來源伺服器 目標伺服器
選擇或建立資料庫來保存事件通知和主要金鑰。 選擇或建立資料庫來保存主要金鑰。
如果源資料庫沒有主要金鑰存在, 請建立主要金鑰。 來源和目標資料庫都需要主要密鑰,以協助保護其各自的憑證。 如果目標資料庫沒有主要金鑰存在,請建立主要金鑰。
建立登入和源資料庫對應的使用者 建立目標資料庫的登入和對應的使用者。
建立 源資料庫用戶所擁有的憑證。 建立目標資料庫用戶所擁有的憑證。
將憑證備份 至目標伺服器可存取的檔案。 將憑證備份至來源伺服器可存取的檔案。
建立使用者,指定目標資料庫的使用者,且不登入(WITHOUT LOGIN)。 此用戶將擁有要從備份檔建立的目標資料庫憑證。 使用者不需要對應至登入,因為此使用者的唯一用途是擁有在後續步驟 3 中建立的目標資料庫憑證。 建立使用者,指定源資料庫的使用者,並且不需要登入。 此用戶將擁有要從備份檔建立的源資料庫憑證。 使用者不需要對應至登入,因為此使用者的唯一用途是擁有在後續步驟 3 中建立的源資料庫憑證。

步驟 3:共用憑證並授與資料庫層級驗證的許可權。

在來源和目標伺服器上完成下列動作。

來源伺服器 目標伺服器
從目標憑證的備份檔建立憑證,並將目標資料庫使用者指定為擁有者。 從來源憑證的備份檔建立憑證,並將源資料庫使用者指定為擁有者。
授與許可權 ,以建立事件通知給源資料庫使用者。 如需此權限的詳細資訊,請參閱 CREATE EVENT NOTIFICATION (Transact-SQL) 在現有的事件通知 Service Broker 合約上,將 REFERENCES 許可權授與目標資料庫使用者: https://schemas.microsoft.com/SQL/Notifications/PostEventNotification
建立遠端服務系結 至目標服務,並指定目標資料庫用戶的認證。 遠端服務系結可確保源資料庫用戶所擁有的憑證中的公鑰會驗證傳送至目標伺服器的訊息。 授予 目標資料庫使用者的 CREATE QUEUE、CREATE SERVICE 和 CREATE SCHEMA 許可權。
如果尚未以目標資料庫使用者身分連接到資料庫,請立即這麼做。
建立佇列 以接收事件通知訊息,並 建立服務 來傳遞訊息。
將目標服務的 SEND 許可權 授予源資料庫使用者。
將源資料庫的 Service Broker 識別碼提供給目標伺服器。 查詢 sys.databases 目錄檢視的 service_broker_guid 數據行,即可取得此標識符。 針對伺服器層級事件通知,請使用 msdb 的 Service Broker 識別符。 將目標資料庫的 Service Broker 識別碼提供給來源伺服器。

步驟 4:建立路由並設定伺服器層級驗證。

在來源和目標伺服器上完成下列動作。

來源伺服器 目標伺服器
建立 目標服務的路由,並指定目標資料庫的 Service Broker 識別符和已同意的 TCP 通訊埠號碼。 建立來源服務的路由,並指定源資料庫的 Service Broker 標識符和已同意的 TCP 連接埠號碼。 若要指定來源服務,請使用下列提供的服務: https://schemas.microsoft.com/SQL/Notifications/EventNotificationService
切換至 master 資料庫以設定伺服器層級驗證。 切換至 master 資料庫以設定伺服器層級驗證。
如果 master 資料庫沒有主要金鑰存在, 請建立主要金鑰 如果 master 資料庫沒有主要金鑰存在,請建立主要金鑰。
建立 驗證資料庫的憑證。 建立驗證資料庫的憑證。
將憑證備份 至目標伺服器可存取的檔案。 將憑證備份至來源伺服器可存取的檔案。
建立端點,並指定已同意的 TCP 連接埠號碼 FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name),以及驗證憑證的名稱。 建立端點,並指定已同意的 TCP 連接埠號碼、FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name),以及驗證憑證的名稱。
建立登入,並指定目標伺服器的登入。 建立登入,並指定來源伺服器的登入。
將端點上的 CONNECT 許可權授與目標驗證器登入。 將端點上的 CONNECT 許可權授與來源驗證器登入。
建立使用者,並指定目標驗證器登入。 建立使用者,並指定來源驗證器登入。

步驟 5:共用伺服器層級驗證的憑證,並建立事件通知。

在來源和目標伺服器上完成下列動作。

來源伺服器 目標伺服器
從目標憑證的備份檔建立憑證,並將目標驗證器使用者指定為擁有者。 從來源憑證的備份檔建立憑證,並將來源驗證器使用者指定為擁有者。
切換至要在其中建立事件通知的源資料庫,如果您尚未以源資料庫使用者身分連線,請立即這麼做。 切換至目標資料庫以接收事件通知訊息。
建立事件通知,並指定目標資料庫的 Broker 服務和識別碼。

另請參閱

格蘭特 (Transact-SQL)
備份憑證 (Transact-SQL)
sys.databases (Transact-SQL)
加密階層
實作事件通知
CREATE MASTER KEY (Transact-SQL)
CREATE LOGIN (Transact-SQL)
創建用戶(Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
建立遠端服務綁定 (CREATE REMOTE SERVICE BINDING - Transact-SQL)
格蘭特 (Transact-SQL)
CREATE ROUTE (Transact-SQL)
創建隊列(Transact-SQL)
CREATE SERVICE (Transact-SQL)
建立端點(Transact-SQL)
CREATE EVENT NOTIFICATION (Transact-SQL)