Sql-Server

始終線上的服務代理問題

  • December 18, 2020

我的一個客戶有一個與服務代理一起工作的數據庫,上週我們試圖將數據庫移動到一個始終線上的環境中,而不知道應用程序使用服務代理。在有人抱怨它不起作用(預定的會議沒有添加到日曆中並且在舊會議完成後沒有關閉(它是一個診所應用程序))之後,我們發現 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,然後嘗試配置服務代理。

你可以

  1. 從 AO 中刪除數據庫
ALTER DATABASE '' SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE -- on primary
  1. 僅將 DB 添加到 AO
  2. 核實:
USE master
SELECT name, is_broker_enabled
FROM sys.databases
order by is_broker_enabled desc

引用自:https://dba.stackexchange.com/questions/214081