今天我要啟動一個log shipping的standby 資料庫 |
就在想....sql server 到底能不能像oracle一樣回到某個時間點 |
我就查了internet |
還真可以啊..... |
挖哩~~ |
管理sql server 好幾年了 |
我還真不知道可以做到這一步 |
真是鄙視我自己啊..... |
人家的文章 [SQL SERVER]如何利用交易紀錄檔還原到某一時間點 |
restore log urdb |
from disk = 'e:\logshipping\urdb_log.bak' |
WITH RECOVERY, STOPAT = '2020-06-11 13:15:00.000' |
以前是拿到多少交易記錄檔備份檔 |
就做多少restore |
沒想過要限定時間 ========20201116 ================= |
終於有了實務案例 |
---|
上個把standby 啟動後交付給AP |
說是資料異動太快 |
她沒辦法驗資料 |
真是腦袋三條線 |
討論之後 |
只好挑選了昨天早上8~9點的時段 |
進行point in time recovery |
這是我的步驟 |
1. 8點上來,先把log shipping的job都停掉 |
2. 08:16手動進行log backup , 傳檔到板橋後 |
也確認所有的之前的log都restore了 |
3. 進行PITR Recovery |
原本我想說我照著微軟的官方文件來處理stopat的時間資料好了 |
Restore a SQL Server Database to a Point in Time (Full Recovery Model) |
結果不work |
restore log urdb from disk='s:\log_ship\urdb_20201114234651.trn' with stopat = 'Nov 15, 2020 08:15 AM' , norecovery; |
restore log urdb from disk='s:\log_ship\urdb_20201115000141.trn' with stopat = 'Nov 15, 2020 08:15 AM' , norecovery; |
restore log urdb from disk='s:\log_ship\urdb_log.bak' with stopat = 'Nov 15, 2020 08:15 AM' , norecovery; |
RESTORE DATABASE urdb WITH RECOVERY; |
GO |
就更換為一般所知的時間格式 |
restore log urdb from disk='s:\log_ship\urdb_20201114234651.trn' with stopat = '2020-11-15 08:15:00.000' , norecovery; |
restore log urdb from disk='s:\log_ship\urdb_20201115000141.trn' with stopat = '2020-11-15 08:15:00.000' , norecovery; |
restore log urdb from disk='s:\log_ship\urdb_log.bak' with stopat = '2020-11-15 08:15:00.000' , norecovery; |
RESTORE DATABASE urdb WITH RECOVERY; |
GO |