sql--sqlserver--SQL問題:未啓用當前數據庫的 SQL Server Service Broker

出現該問題情境一:
這兩天啓動監控數據庫windows服務,一直啓動不起來,原來一直好好的,這次突然出這麼個錯,記錯誤日誌也沒有信息,也就是說,在windows服務裏,並不是所有的錯誤都會拋出來的。

後來,只能把服務代碼放到winform程序中,結果還真拋出來錯誤了,如下:
“未啓用當前數據庫的 SQL Server Service Broker,因此查詢通知不受支持。如果希望使用通知,請爲此數據庫啓用 Service Broker”。

出現該問題情境二:
數據庫分離後,附加回到數據庫,然後在程序中打開調用數據庫的頁面,出現如下問題:“未啓用當前數據庫的
SQL Server Service Broker,因此查詢通知不受支持。如果希望使用通知,請爲此數據庫啓用 Service Broker
”。

解決方案:

在使用的數據庫下,依次執行如下語句:

第一步:
SELECT is_broker_enabled FROM sys.databases WHERE name = '數據庫名稱'

執行發現:查看is_broker-enabled爲 0,依然 未啓用 Service broker

第二步:
ALTER DATABASE '數據庫名稱' SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE '數據庫名稱' SET ENABLE_BROKER;
第三步:
SELECT is_broker_enabled FROM sys.databases WHERE name = '數據庫名稱'

執行發現:查看is_broker-enabled爲 1 ,表示成功 啓用 Service broker,完成。

.

NEW_BROKER選項,SQL SERVER聯機叢書上的解釋:

每個數據庫都包含一個 Service Broker 標識符。sys.databases 目錄視圖的 service_broker_guid 列顯示該
實例中每個數據庫的 Service Broker 標識符。Service Broker 路由使用 Service Broker 標識符來保證一個
會話的所有消息都傳遞到同一個數據庫。因此,Service Broker 標識符在同一網絡上的所有實例中應是唯一的
。否則,消息可能被誤傳。
SQL Server 爲每個新數據庫生成新的 Service Broker 標識符。由於標識符是新的,因此 SQL Server 可以安
全地激活新數據庫中的 Service Broker 消息傳遞。網絡上的其他數據庫應該不會有與之相同的 Service
Broker 標識符。
NEW_BROKER。此選項用於激活 Service Broker 消息傳遞,同時爲數據庫創建新的 Service Broker 標識符。由
於該數據庫中所有的現有會話都未使用新的實例標識符,因此,此選項將結束這些會話並返回一個錯誤。
ROLLBACK IMMEDIATE將立即回滾未完成的事務。

轉自:
http://blog.csdn.net/nan2008zzu/article/details/52078587
http://www.cnblogs.com/wanghk/archive/2012/05/12/2497170.html
https://www.cnblogs.com/12jh23/p/7526896.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章