SQL Server 交易記錄檔筆記 (Dancing With Transaction logs) 🕺💃

2021-02-01

筆記綜整關於 SQL Server 的用途、運用以及限制。

SQL Server Logo

說明

交易紀錄的用途?

  1. 個別交易的復原 (Individual transaction recovery)
  2. 在 SQL Server 啟動時,復原所有未完成的交易 (Recovery of all incomplete transactions)
  3. 將還原的資料庫、檔案、檔案群組或頁面向前復原到失敗點 (Rolling a restored to the point of failure.)
  4. 支援 Transactional Replication
  5. 支援 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 ?

檢視備份裝置的內容(備份的情形)

資料庫 > 工作 > 備份 > 內容 (顯示裝置內容)

交易記錄檔 LDF 太大,該如何處理?

參考資料

備份與還原觀念介紹與策略規畫

SQL Server 交易記錄架構與管理指南

交易記錄 (SQL Server)