2009-01-26 108 views
15

我正在嘗試管理SQL Server 2008日誌文件的大小。我有一個每天加載一次的報告數據庫。簡單恢復模式是最合適的,因爲除了早上加載之外,沒有其他事務,我可以重新創建這些記錄。我的目標是讓事務日誌處於一個固定的大小,足夠大,以免在加載過程中分配新空間。如何管理SQL Server日誌大小

我的問題是日誌不斷增長。我知道日誌應該標記爲重用,但爲什麼日誌不斷增長? log_reuse_wait_desc顯示「Nothing」。

我可以收縮日誌文件,以1 MB,所以我知道在它沒有交易。我可以設置一個工作來做到這一點,但我寧願將日誌保留爲500MB,這足以處理日常負載。如果我這樣做,日誌會增長。

如何保持日誌的大小一致?

請注意:收縮日誌文件並沒有解決這個問題。我知道該怎麼做。我試圖找到一種方法來重新使用事務日誌中的空間。

+0

我最近回答了類似的問題:[http://stackoverflow.com/questions/453858/sql-server-log-file-confusion#454137](http://stackoverflow.com/問題/ 453858/sql-server-log-file-confusion#454137) – DavGarcia 2009-01-26 19:12:15

+0

您是否定期備份您的事務日誌? – bobwienholt 2009-01-26 18:50:40

回答

4

創建維護作業備份的數據庫和收縮日誌

0

了我的頭頂部,你可以使用DBCC SHRINKFILE做到這一點。

3

的DBCC SHRINKFILE命令允許你指定一個目標大小:

DBCC SHRINKFILE (DataFile1, 7) 

縮文件DataFile1到7MB

文檔:MSDN

25

日誌文件用於交易目的,即使數據庫處於SIMPLE RECOVERY MODE模式。如果LOG大小真正增長超過500 MB,則某人正在運行需要該空間的查詢或存儲過程。

例如,您可能正在爲您的報表創建索引。這將在事務內完成,以便在發生錯誤時可以回滾更改。但是,一旦完成後,已用空間將在其他交易後發佈。

因此,如果日誌大小在開始和1MB增加到說,700MB,那麼事情正在做,需要的是空間。如果將大小鎖定爲500MB,則最終會收到「日誌文件空間不足」錯誤。

但如果你真的想在500MB修復它,你可以做到以下幾點: (我使用SQL Server 2005)

  1. 微軟推出SQL Server Management Studio中
  2. 找到你的數據庫和右鍵單擊它。選擇屬性。
  3. 點擊文件部分
  4. 找到日誌文件行。
  5. 更改初始大小:500
  6. 找到自動增長部分,單擊省略號(...)
  7. 取消選中「啓用自動增長」。點擊確定。
  8. 單擊確定進行更改。

注意:您還可以在「autogrowth部分」中設置最大日誌文件大小。

或者,您可以使用以下腳本進行更改。用適當的值替換DATABASENAME。如果需要,還可以更改日誌文件名稱。

USE [master] 
GO 
ALTER DATABASE [DatabaseName] MODIFY FILE (NAME = N'DATABASENAME_Log', SIZE = 512000KB , FILEGROWTH = 0) 
GO