最近某一台 DB Server 在事件檢視器出現一連串的錯誤訊息,是由 MSSQL 吐出來的 error code 分別是 14420、14421
錯誤: 14420,高的嚴重性等級: 16,狀態: 1
記錄傳送主要資料庫 %s.%s 有 %d 分鐘備份臨界值時,無法執行 %d 分鐘備份記錄作業。檢查代理程式記錄檔和 logshipping 監視器資訊。
錯誤: 14421,高的嚴重性等級: 16,狀態: 1
記錄傳送次要資料庫 %s.%s 有 %d 分鐘還原臨界值,並不同步。%D 分鐘執行,沒有還原。已還原的延遲時間是 %d 分鐘。檢查代理程式記錄檔和 logshipping 監視器資訊。
小弟已經習以為常的判斷微軟的怪怪錯誤訊息,從訊息看到有主要資料庫備份、次要資料庫還原,才想到這台有做 Log shipping。
回想之前在進行 Log shipping 設定的時候,其中 Log shipping 有提供警示的功能來判斷是否 Log shipping 有正常在運作
經查發現 Log shipping 運作正常,也有還原成功,但那為什麼還是會有警示訊息呢!?
從微軟的文件提供 14420、14421 的判斷訊息中了解到,在執行 Log shipping 時是使用 Sqlmaint.exe 在運作
Sqlmaint.exe 會寫入監視伺服器 log_shipping_primaries table
由 log_shipping_primaries 去和主要伺服器的 last_backup_filename 或次要伺服器的 last_loaded_filename 去比對差異時間
若是執行超過設定的時間就會發出警示
在這個案例中,是由於資料庫過大導致 DB 在備份、還原的時間超過所設定的時間,所以發出警示,但並不代表沒有備份還原成功
若是要調整警示時間,可以執行以下步驟
step2. 點選交易紀錄傳送→ 備份設定→ 找到警示時間,並調寬警示時間。
step3. 再來是調整次要伺服器的還原警示時間
然後按確認後,再測試一次 Log shipping 警示訊息應該就不會再出現囉!!
參考資料:
14420 的錯誤訊息和錯誤訊息 14421 當您使用 SQL Server 中的記錄傳送時,發生的描述