Sql-Server-2008

從 SQL Server Express 事務日誌中提取由於大小限製而失敗的插入

  • January 28, 2021

我有一個帶有完整恢復模型的 SQL Server Express 數據庫。幾個月前,數據庫達到了它的大小限制(10GB),一些數據沒有成功添加到數據庫中。在那之後的幾個星期,數據庫開始接收每月的完整備份,但從來沒有任何事務日誌備份。事務日誌仍然是一個過大的文件 (>200GB)。這兩個文件都可以無限制地自由增長。

該事務日誌是否可能包含幾個月前未能插入的數據,或者文件只是因為沒有截斷/收縮而變得那麼大?

我很欣賞每月備份對完全恢復模式沒有任何意義。那隻是現狀。

事務日誌的大小只是由於其基於備份之間事務處理的數據量的正常增長模式。它會增長到保存事務所需的任何大小,直到在日誌上進行備份以刷新那些硬化的事務不會縮小日誌文件。相反,該空間保留為保留的空白空間,事務日誌重新用於新事務。

因此,日誌文件的大小與您插入數據失敗是否在其中沒有相關性。充其量它可能在它的先前備份之一中,作為回滾事務,並且以非人類可讀的形式。不幸的是,至少在這個問題的上下文中,失敗的數據插入可能已經消失了。

該事務日誌是否可能包含幾個月前未能插入的數據,或者文件只是因為沒有截斷/收縮而變得那麼大?

如果自從某些數據插入失敗事件以來,您還沒有執行任何事務日誌備份,**並且數據庫一直使用 FULL 恢復模式,那麼來自失敗插入的數據應該在事務日誌中。根據您的事務日誌的大小,情況似乎很可能是這樣。

sys.fn_dblog您可以通過系統表值函式以及其他一些更神秘的格式訪問事務日誌,但它們都不是人類可讀的。

如果這些數據真的很重要,您可以考慮使用像ApexSQL Log這樣的商業事務日誌讀取工具。看起來他們有免費試用,所以你可以試一試,看看它是否有幫助。我沒有使用過該工具,也不隸屬於它,我只是認為值得指出的是,對於像你這樣的情況,有這樣的工具。

我認為Quest Litespeed還具有日誌讀取和對象級恢復的功能。

祝你好運!

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