簡體   English   中英

如何減小 sql server 日志文件的大小?

[英]How do I decrease the size of my sql server log file?

所以我一直忽略對我的fogbugz數據庫做任何備份,現在fogbugz ldf文件超過2個半演出。 這是我們在使用fogbugz 的六個月中建立起來的。

我備份了數據庫,然后我備份,並截斷了事務日志,但事務日志仍然是 2 個半演出。 我對日志文件做了一個縮小,它仍然是 2 個半的演出。 我所做的一切似乎都沒有縮小文件的大小。

有沒有辦法解決這個問題? 或者是此時分離數據庫,刪除日志文件然后重新附加一個新的唯一方法?

  • 執行數據庫的完整備份。 不要跳過這個。 真的。
  • 將數據庫的備份方法更改為“簡單”
  • 打開一個查詢窗口,輸入“checkpoint”並執行
  • 執行數據庫的另一個備份
  • 將數據庫的備份方法改回“完整”(或其他任何方法,如果它還不是簡單的話)
  • 執行數據庫的最終完整備份。
  • 一一運行以下查詢
    1. USE Database_Name
    2. select name,recovery_model_desc from sys.databases
    3. ALTER DATABASE Database_Name SET RECOVERY simple
    4. DBCC SHRINKFILE (Database_Name_log , 1)

歡迎來到變化無常的 SQL Server 日志管理世界。

有些事情是錯誤的,但我認為沒有一些額外的信息,沒有人能告訴你更多。 例如,此數據庫是否曾用於事務性 SQL Server 復制? 如果事務尚未復制到訂閱者,這可能會導致類似的問題。

在此期間,這至少應該允許您終止日志文件:

  1. 執行數據庫的完整備份。 不要跳過這個。 真的。
  2. 將數據庫的備份方法更改為“簡單”
  3. 打開一個查詢窗口,輸入“checkpoint”並執行
  4. 執行數據庫的另一個備份
  5. 將數據庫的備份方法改回“完整”(或其他任何方法,如果它還不是簡單的話)
  6. 執行數據庫的最終完整備份。

您現在應該能夠縮小文件(如果執行備份不適合您)。

祝你好運!

  1. 確保數據庫的備份模式設置為簡單(有關不同模式的概述,請參見此處)。 這將避免 SQL Server 在重用空間之前等待事務日志備份。

  2. 使用dbcc shrinkfileManagement Studio來收縮日志文件。

在設置備份模式之前,步驟 #2 將不執行任何操作。

這是使用查詢完成的最佳建議之一。 適合像我一樣擁有大量數據庫的人。 可以使用腳本運行它。

https://medium.com/@bharatdwarkani/shrinking-sql-server-db-log-file-size-sql-server-db-maintenance-7ddb0c331668

USE DatabaseName;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE DatabaseName
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (DatabaseName_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE DatabaseName
SET RECOVERY FULL;
GO

您必須多次收縮和備份日志才能減小日志文件的大小,這是因為日志文件頁面不能像數據文件頁面那樣重新組織,只能被截斷。 有關更詳細的解釋, 請查看此內容。

警告:分離數據庫並刪除日志文件是危險的! 除非您希望數據丟失,否則不要這樣做

我遇到了同樣的問題,我的數據庫日志文件大小約為 39 GB,在縮小(數據庫和文件)后,它減少到 37 GB 不夠用,所以我做了這個解決方案:(我不需要 ldf 文件(日志文件)了)

(**重要):在此過程之前獲取數據庫的完整備份。

  1. 在該數據庫上運行“檢查點”。

  2. 分離該數據庫(右鍵單擊該數據庫並選擇任務 >> 分離...){如果您看到錯誤,請執行本文末尾的步驟}

  3. 將 MyDatabase.ldf 移動到另一個文件夾,您可以在與數據庫相同的文件夾中的硬盤中找到它(以防萬一您將來由於某些原因需要它,例如用戶執行了某些任務)。

  4. 附加數據庫(右鍵單擊數據庫並選擇附加...)

  5. 在附加對話框中刪除 .ldf 文件(顯示“找不到文件”注釋)並單擊“確定”。 (不要擔心在附件過程后會創建 ldf 文件。)

  6. 之后,會創建一個大小為 504 KB 的新日志文件!!!。

在步驟 2 中,如果您遇到數據庫被其他用戶使用的錯誤,您可以:

1.在主數據庫“sp_who2”上運行這個命令,看看是什么進程在使用你的數據庫。

2.讀取進程號,例如它是52並輸入“kill 52”,現在你的數據庫是空閑的,可以分離了。

如果使用數據庫的進程數量過多:

1.打開服務(在windows start中輸入services)找到SQL Server ...進程並重置它(右鍵單擊並選擇重置)。

  1. 立即單擊分離對話框中的確定按鈕(之前顯示分離錯誤)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM