Sql-Server
始終線上的服務代理問題
我的一個客戶有一個與服務代理一起工作的數據庫,上週我們試圖將數據庫移動到一個始終線上的環境中,而不知道應用程序使用服務代理。在有人抱怨它不起作用(預定的會議沒有添加到日曆中並且在舊會議完成後沒有關閉(它是一個診所應用程序))之後,我們發現 Microsoft 引用了始終開啟的服務代理並嘗試使用它: https ://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/service-broker-with-always-on-availability-groups-sql-server?view=sql-server -2017
但它仍然沒有工作。起初我們嘗試過
alter database [databasename] set enable_broker with rollback immediate alter database [databasename] set new_broker with rollback immediate
消息 1468,級別 16,狀態 1,第 2 行 無法對數據庫“dbname”執行操作,因為它涉及數據庫鏡像會話或可用性組。不允許對參與數據庫鏡像會話或可用性組的數據庫執行某些操作。消息 5069,級別 16,狀態 1
我們還嘗試了這些命令:
CREATE ENDPOINT [SSBEndpoint] STATE = STARTED AS TCP (LISTENER_PORT = 4022, LISTENER_IP = ALL ) FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS) GRANT CONNECT ON ENDPOINT::[SSBEndpoint] TO [PUBLIC] ALTER ROUTE AutoCreatedLocal WITH ADDRESS = 'TCP://[server]:4022' ;
最後我們別無選擇,我們將它從永遠線上組中取出,在執行此命令後它起作用了:
ALTER ROUTE AutoCreatedLocal WITH ADDRESS = 'LOCAL' ;
有沒有人建議我們在配置上缺少什麼?謝謝。
我確定這已排序,但您必須在創建可用性組之前啟用服務代理。此消息表明您創建了 AG,然後嘗試配置服務代理。
你可以
- 從 AO 中刪除數據庫
- 跑
ALTER DATABASE '' SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE -- on primary
- 僅將 DB 添加到 AO
- 核實:
USE master SELECT name, is_broker_enabled FROM sys.databases order by is_broker_enabled desc