管理 Service Broker 識別

每個資料庫都包含唯一的識別碼,用於將 Service Broker 訊息路由至該資料庫。此主題描述 Broker 識別、Service Broker 防止訊息錯誤導向的方法和可用於管理 Broker 識別的選項。

Service Broker 識別碼

每個資料庫都包含 Service Broker 識別碼。sys.databases 目錄檢視的 service_broker_guid 資料行會顯示執行個體中每個資料庫的 Service Broker 識別碼。Service Broker 路由會使用 Service Broker 識別碼來保證交談的所有訊息都傳遞至相同資料庫。因此,Service Broker 識別碼在相同網路上的所有執行個體中應該是唯一的。否則,可能會錯誤導向訊息。

Service Broker 訊息傳遞

為了協助保證 Service Broker 識別碼在網路上的所有資料庫中都是唯一的,SQL Server 提供了一種用於停用資料庫中 Service Broker 訊息傳遞的機制。當停用資料庫中的訊息傳遞時,從該資料庫中傳送的所有訊息都會保留在資料庫的傳輸佇列中。此外,Service Broker 不會將該資料庫中的服務視為可用於接收訊息。當 Service Broker 路由在執行個體中找出目的地服務時,就不會考慮這些服務。

停用 Service Broker 訊息傳遞可讓您安全地附加資料庫備份以用於疑難排解或資料復原,而不用冒著錯誤導向訊息的風險。sys.databasesis_broker_enabled 資料行會顯示每個資料庫之 Service Broker 訊息傳遞的目前狀態。

SQL Server 會為每個新資料庫產生新的 Service Broker 識別碼。因為識別碼是新的,所以 SQL Server 可以安全地啟用新資料庫中的 Service Broker 訊息傳遞。網路上的其他資料庫不應具有相同的 Service Broker 識別碼。

當您附加或還原資料庫時,請小心確保僅有一個具有給定 Service Broker 識別碼的資料庫啟用訊息傳遞。否則,會錯誤導向訊息,且交談處理可能會出現在資料庫的錯誤副本中。

管理識別碼和訊息傳遞

CREATE DATABASE 命令、ALTER DATABASE 命令和 RESTORE DATABASE 命令包含啟用 Service Broker 訊息傳遞的選項和變更資料庫之 Service Broker 識別碼的選項。

當您附加或還原資料庫時,依預設,Service Broker 識別碼和訊息傳遞的狀態維持不變。一般而言,在為復原而還原備份時、設定鏡像組時或設定待命伺服器的記錄傳送時,不會變更 Service Broker 識別碼。在建立資料庫的副本時,會變更執行個體識別碼。

有四個選項可以用於管理識別碼和訊息傳遞:

  • ENABLE_BROKER。此選項會啟用 Service Broker 訊息傳遞,同時保留資料庫的現有 Service Broker 識別碼。
ms166057.note(zh-tw,SQL.90).gif附註:
在任何資料庫中啟用 SQL Server Service Broker 都需要資料庫鎖定。若要在 msdb 資料庫中啟用 Service Broker ,請先停止 SQL Server Agent,這樣 Service Broker 才可取得必要的鎖定。
  • DISABLE_BROKER。此選項會停用 Service Broker 訊息傳遞,同時保留資料庫的現有 Service Broker 識別碼。
  • NEW_BROKER。此選項會啟用 Service Broker 訊息傳遞,並為資料庫新建 Service Broker 識別碼。此選項會結束資料庫中任何現有的交談,並傳回錯誤,因為這些交談不使用新的執行個體識別碼。
  • ERROR_BROKER_CONVERSATIONS。此選項會啟用 Service Broker 訊息傳遞,同時保留資料庫的現有 Service Broker 識別碼。Service Broker 會結束資料庫中的所有交談,並傳回錯誤。

然而,無論指定哪個選項,SQL Server 都不會允許具有相同 Service Broker 識別碼的兩個資料庫,在相同 SQL Server 執行個體中同時啟動訊息傳遞。如果你為資料庫附加與現有資料庫相同的 Service Broker 識別碼,SQL Server 則會停用正在附加之資料庫中的 Service Broker 訊息傳遞。

如需有關附加資料庫選項的詳細資訊,請參閱<CREATE DATABASE (Transact-SQL)>和<ALTER DATABASE (Transact-SQL)>。如需有關如何啟動資料庫中 Service Broker 訊息傳遞的指示,請參閱<如何:啟動資料庫中的 Service Broker 訊息傳遞 (Transact-SQL)>。

請參閱

其他資源

ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
sys.databases (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助