排除SQL Server Alwayson可用性群組同步失敗的狀況

本文將介紹如何排除SQL Server Alwayson可用性群組同步失敗的狀況。

問題描述

SQL Server 自2012以後的版本,新增了AlwaysOn技術來做為高可用性解決方案,今天筆者不談如何架設AlwaysOn,談的是當您發生可用性群組發生同步失敗時,您可能會在高可用性群組儀表板上看到某些複本的Synchronization State呈現Not Synchronizing,而且在參與可用性群組的資料庫上呈現Not Synchronizing。

image

此時若您點選呈現Not Synchronizing的資料庫時,會出現如下圖的錯誤訊息。

image

解決步驟

在主要複本同步到次要複本時發生錯誤或異常時,您可能會遇到上一節所呈現的狀況,要解決這個問題您可以利用ALTER DATABASE SET HADR的指令碼來暫停/繼續複本之間的資料同步作業。

但是要執行ALTER DATABASE SET HADR來解決可用性群組中資料庫同步的問題前,要注意的是:

1、一次只允許一個SET HADR選項。

2、只能在次要複本上面執行。

以上一節的狀況為例,參與可用性群組的資料庫有兩個,分別是Northwind和Pubs,您可以在次要複本中分別對這兩個資料庫暫停然後繼續複本的同步,例如下列的指令碼:


alter database Northwind set hadr suspend
alter database Northwind set hadr resume

alter database pubs set hadr suspend
alter database pubs set hadr resume

執行完畢之後再回到可用性群組儀表板就可以發現所有同步作業已經都恢復正常了。

image

參考資料

SQL Server 2012 Availability Group Replica Not Synchronizing

ALTER DATABASE SET HADR (Transact-SQL)