SQL Server 交易記錄檔筆記 (Dancing With Transaction logs) 🕺💃
2021-02-01
筆記綜整關於 SQL Server 的用途、運用以及限制。
說明
交易紀錄的用途?
- 個別交易的復原 (Individual transaction recovery)
- 在 SQL Server 啟動時,復原所有未完成的交易 (Recovery of all incomplete transactions)
- 將還原的資料庫、檔案、檔案群組或頁面向前復原到失敗點 (Rolling a restored to the point of failure.)
- 支援 Transactional Replication
- 支援 HA / DR Solution : Always On availability groups, database mirroring, and log shipping
開發者關心的:
不小心加入 / 刪除大量的資料,資料庫能不能回復?
如果是進行一個 Transaction , Rollback 資料就好,沒有問題。
如果不是,則視資料庫的復原模式 (Recovery Mode)決定:
Full Recovery Mode 只要有過完整記錄,並直接還原至特定時間點 Recovery in Point 簡單方便
如果是Simple Recovery Mode,只能回復到最近的完整及差異備份,但之後的資料都無法回復,因此在簡單復原模式的情境沒有辦法處理
如何處理 ldf 檔案過大的問題
先進行初步筆記,之後另外獨立成為新的文章。
不思考原理的直接處理方式:
-- 調整復原模式為簡單
ALTER DATABASE DatabaseName SET RECOVERY SIMPLE;
-- 壓縮 log file 為 1 MB
DBCC SHRINKFILE (logFileName, 1)
-- 恢復復原模式為完整
ALTER DATABASE DatabaseName SET RECOVERY FULL;
🚧 直接壓縮是否會摧毀完整復原模式下 ldf 提供的 Recovery in point ?
檢視備份裝置的內容(備份的情形)
資料庫 > 工作 > 備份 > 內容 (顯示裝置內容)