Sql-Server
帶鏡像的簡單恢復模式 - 這可能嗎?
(通常的“我不是真正的 DBA,但我需要以某種方式處理這個”免責聲明)
我們有一個具有完全恢復模型的數據庫,它並不真正需要完全恢復模型……只有它需要。
首先是一些上下文:有問題的數據庫包含夜間作業調度程序使用的一些數據(例如伺服器連接參數、隊列狀態等)。這些數據並不能真正保證時間點恢復,甚至就此而言,也不能保證備份,因為從頭開始重新創建整個數據庫要容易得多。同時它是一個啟用鏡像的生產數據庫,因此如果我們出於任何原因切換到 DR 伺服器,它可以保持線上和可用。
所以我們處於 Catch-22 的情況:要麼我們切換到 Simple 並失去自動故障轉移設置(這對我們來說是必要的),要麼我們保持 Full 並定期進行我們實際上不需要的日誌備份,否則事務日誌文件將繼續增長(同樣,我們實際上不需要的數據)。
我能想出的唯一解決方案是安排一個丟棄所有事務日誌數據的自動作業,但我一直想知道是否有更明智的方法來處理這個問題。
鏡像使用事務日誌來重做鏡像站點的所有內容。在簡單恢復模型中,事務日誌實際上是暫時的,日誌中只保留足夠的資訊用於撤消/重做,以在崩潰恢復期間保持數據庫的一致性。所以數據庫鏡像在簡單恢復模型中是不可能的,因為它不受支持。
雖然我通常不建議這樣做,但對於您的具體情況,這將起作用。您可以將日誌備份到 NUL 設備。NUL 設備是作業系統中的一個設備文件,它丟棄所有寫入它的數據,但報告寫操作成功。這是基本的 TSQL 語法(請注意,此設備的 NUL 中只有 1 L,不要與 NULL 混淆):
Backup log [TestDatabase] to Disk = 'NUL'
您可以將其放入 SQL 代理作業並相應地安排它。只是提醒任何閱讀本文的人,這將破壞“時間點”恢復,通常不推薦。