Sql-Server

具有 HA 集群的 Sql Server 2017 上的 CDC 停止工作

  • February 17, 2021

我目前正在使用在 Windows Server 2016 上執行的 Sql Server 2017 (14.0.3294.2) 作為 HA 集群,一個主節點和兩個從節點。

幾天前,主伺服器重新啟動,我認為執行此操作的人執行了一些操作,使主伺服器再次成為主伺服器。從那以後,CDC停止了工作。查詢 cdc 表並不能提供有關狀態的線索。CDC 作業已啟用。

我發現了這篇文章:https ://stackoverflow.com/questions/23744083/cdc-is-enabled-but-cdc-dbotable-name-ct-table-is-not-being-populated但是,我很不願意在這種情況下使用解決方案。

CDC 作業日誌中的最後一個錯誤是(在主系統重新啟動後):

作為使用者執行:使用者名。無法更新數據庫“DatabaseName”,因為該數據庫是只讀的。

$$ SQLSTATE 25000 $$(錯誤 3906)。注意:該步驟已重試請求的次數 (10),但未成功。步驟失敗。

有關如何使 CDC 再次工作的任何建議?

謝謝

似乎問題是由數據庫不是主要的事實產生的。實際上它是只讀狀態。嘗試故障回復相關 AG 組。

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/perform-a-planned-manual-failover-of-an-availability-group-sql-server?view=sql-server-ver15

關於 cdc 作業,您需要在 AG 集群的每個節點中都有它。看看如何在 alwayson 環境中管理 cdc:

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/replicate-track-change-data-capture-always-on-availability?view=sql-server-ver15

我所要做的就是啟動在主伺服器上執行的作業EXEC msdb.dbo.sp_start_job 'cdc.DbName_capture';

好消息是它趕上了自工作失敗以來所做的所有更改。

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