Sql-Server

從特定事務恢復日誌傳送

  • May 3, 2019

是否可以強制 SQL 日誌傳送從給定的 .trn 文件開始執行?

我有兩個數據庫,一個發送到另一個數據庫,這工作正常。但是我不得不恢復主數據庫,並在此期間創建了另一個 .trn 文件。(這將是垃圾,因為數據庫已恢復,因此無法在任何地方應用。)對於下一個事務,我手動備份了整個數據庫,並可以手動將其恢復到日誌目的地。(以下 13.trn)

創建的下一個事務文件也可以手動恢復。但是,作業在完全備份之前(下面的 12.trn)卡在事務上,當然作業失敗了,因為它位於目標數據庫後面。

如果我可以將它設置為嘗試 15.trn,它應該(可能)工作!我嘗試更改 msdb..log_shipping_secondary_databases 無濟於事。

那麼,是否可以設置 sqllogship.exe 下一個使用哪個文件?

下面的基本範例!

10.trn
11.trn
<DB Was Restored>
12.trn
13.trn (contains full backup)
14.trn  
15.trn

我通過將備用伺服器上表中的last_restored_file列更新log_shipping_monitor_secondary為成功恢復的最後一個事務日誌來手動重置日誌傳送。

像這樣的東西:

UPDATE lsms 
SET lsms.last_restored_file = '{transaction log file}'
FROM dbo.log_shipping_monitor_secondary lsms
WHERE lsms.secondary_database = '{DB Name}';

我建議使用嚮導從頭開始重新創建日誌傳送。此外,如果您的數據庫很大,則壓縮備份(取決於您使用的版本),然後從備份初始化輔助。

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