2008-09-16 60 views
9

因此,我們的SQL Server 2000給我的錯誤是「數據庫的日誌文件已滿,爲數據庫備份事務日誌以釋放一些日誌空間」。數據庫的日誌文件已滿

如何解決這個問題而不刪除日誌,就像其他網站提到的一樣?

附加信息:啓用AutoGrowth已啓用,增長10%,限制爲40MB。

回答

4

斯科特,你猜到了:截斷日誌是一個糟糕的舉動,如果你關心你的數據。

下,免費,視頻將幫助你看看究竟是怎麼回事,並會告訴你如何解決問題,而不截斷日誌。 (這些視頻也解釋了爲什麼是這樣一個危險的黑客,爲什麼你是對的,尋找另一種解決方案。)

連同這些影片將幫助你瞭解到底發生了什麼,並會告訴你是否要切換到SIMPLE恢復,或者看看是否真的改變了你的備份例程。還有一些額外的'how-to'視頻,將向您顯示如何設置備份以確保可用性,同時管理日誌文件的大小和增長。

-1

重命名它。例如:
old-log-16-09-08.log

然後SQL服務器可以使用一個新的空的。

0

那麼你可以採取事務日誌的副本,然後截斷日誌文件,該文件是錯誤消息表明什麼。

如果磁盤空間已滿並且無法通過網絡將日誌複製到另一臺計算機,則通過USB連接驅動器並將其從該路複製。

2

我不認爲重命名或移動日誌文件將工作,而數據庫聯機。

IMO最簡單的做法是打開數據庫的屬性並將其切換到簡單恢復模式。然後縮小數據庫,然後返回並將數據庫設置爲完全重組模型(或任何您需要的模型)。

更改日誌記錄模式強制SQL Server在數據庫中設置檢查點,之後收縮數據庫將釋放多餘的空間。

+1

更精確的術語可能是「簡單恢復模型」。 – SeaDrive 2010-02-17 16:02:09

0

你有問題的答案:備份日誌,然後它會收縮。 制定維護計劃定期備份數據庫,不要忘記選擇「備份事務日誌」。這樣你會保持小。

17

要剛剛清空:

backup log <dbname> with truncate_only 

要保存在某個地方吧:

backup log <dbname> to disk='c:\somefile.bak' 

如果你並不真正需要的交易歷史,嘗試數據庫恢復模式設置爲簡單。

+5

SQL 2008中停止日誌備份的TRUNCATE_ONLY選項。 – Sean 2010-04-19 20:51:53

0

如果它是一個非生產環境中使用

dump tran <db_name> with no_log; 

一旦已經完成收縮日誌文件來釋放磁盤空間。最後將數據庫恢復模式切換爲簡單。

+0

這是現在不推薦使用的舊語法。 BACKUP LOG是首選方法。 – 2008-09-16 15:13:06

1

我誰在過去面對這個錯誤的朋友建議:

嘗試

  • 備份數據庫。維護計劃包括截斷這些文件。
  • 也可以嘗試更改爲DB的「恢復模式」來簡單(而不是全部例如)

原因: 事務日誌膨脹起來,由於被記錄的事件(也許你有一些交易失敗和被回滾..或在交易中突然峯值在服務器上)

0

只要你把數據庫的完整備份,數據庫未使用簡單恢復模式下,SQL Server保留有史以來在數據庫上執行的所有事務的完整記錄。它這樣做是爲了在發生數據文件丟失的災難性故障時,可以通過備份日誌來恢復到故障點,並且一旦恢復舊數據備份,恢復日誌以重放丟失交易。

爲防止這種情況發生,您必須備份事務日誌。或者,您可以使用BACKUP LOG的TRUNCATE_ONLY或NO_LOG選項在當前點斷開鏈。

如果您不需要此功能,請將恢復模式設置爲簡單。

2

醚備份數據庫日誌定期,如果你需要恢復到分鐘或做其他有趣的東西就像日誌傳送的未來,或將數據庫設置爲簡單模式和收縮的數據文件。

不要複製,重命名或刪除.ldf文件,否則會破壞你的數據庫,你從此一蹶不振後,你可能有數據不一致的狀態使之無效。

0

我親愛的朋友的DBA檢查他的日誌文件中非常常見的是合租重要。因爲如果有一天你不太關注它,它會給出這個錯誤。

爲此,你必須使日誌文件就不會面臨這樣的錯誤,定期進行備份。

其他那麼這個以上給出的建議是非常正確的。

相關問題