搜尋本站文章

2011-05-08

錯誤:8355, 無法傳遞伺服器層級的事件通知。可能是 msdb 中已停用 Service Broker,或是無法啟動 msdsb。在其他資料庫中的事件通知也可能會受到影響。請使 msdb 上線,或啟用 Service Broker。

使用環境:
SQL Server 2008 R2 x64位元版本

在 SQL Server 錯誤記錄檔可以檢視到以下的錯誤訊息:
錯誤: 8355,嚴重性: 16,狀態: 1。

Server-level event notifications can not be delivered. Either Service Broker is disabled in msdb, or msdsb failed to start. Event notifications in other databases could be affected as well. Bring msdb online, or enable Service Broker.

無法傳遞伺服器層級的事件通知。可能是 msdb 中已停用 Service Broker,或是無法啟動 msdsb。在其他資料庫中的事件通知也可能會受到影響。請使 msdb 上線,或啟用 Service Broker。

--P01



若要修正錯誤代碼:8355,請執行以下的範例程式碼:

-- 啟動 Service Broker 訊息傳遞並建立資料庫的新 Service Broker 識別碼
/*
使用參數說明:NEW_BROKER
此選項會啟動 Service Broker 訊息傳遞並建立資料庫的新 Service Broker 識別碼。
此選項會結束資料庫中的所有現有交談,並針對每個交談傳回一項錯誤。

這是因為這些交談不會使用新的識別碼。
您必須使用新的識別碼來重新建立參考舊 Service Broker 識別碼的任何路由。
*/
USE master
GO
ALTER DATABASE msdb 
	SET  SINGLE_USER 
	WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE msdb
	SET NEW_BROKER 
	WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE msdb 
	SET  MULTI_USER;
GO

--P02


關閉 SQL Server 服務,再度重新啟動 SQL Server。
在 SQL Server 錯誤記錄檔內就應該沒有此錯誤:

--P03


若要檢查各個資料庫,是否已啟動 Service Broker 訊息傳遞,請執行以下的範例程式碼:
-- 檢視各個資料庫是否已啟動 Service Broker 訊息傳遞
SELECT name N'資料庫', is_broker_enabled N'啟動 Broker 訊息傳遞'
FROM sys.databases
ORDER BY 2 DESC

--P04



參考資料:
管理 Service Broker 識別
http://msdn.microsoft.com/zh-tw/library/ms166057.aspx

Error 8355 - Service Broker Is Disabled - How to Confirm?
http://social.msdn.microsoft.com/Forums/en/sqlservicebroker/thread/7aa1d7d0-366e-4faf-950d-6083bb177005