[英]How do I decrease the size of my sql server log file?
所以我一直忽略對我的fogbugz數據庫做任何備份,現在fogbugz ldf文件超過2個半演出。 這是我們在使用fogbugz 的六個月中建立起來的。
我備份了數據庫,然后我備份,並截斷了事務日志,但事務日志仍然是 2 個半演出。 我對日志文件做了一個縮小,它仍然是 2 個半的演出。 我所做的一切似乎都沒有縮小文件的大小。
有沒有辦法解決這個問題? 或者是此時分離數據庫,刪除日志文件然后重新附加一個新的唯一方法?
USE Database_Name
select name,recovery_model_desc from sys.databases
ALTER DATABASE Database_Name SET RECOVERY simple
DBCC SHRINKFILE (Database_Name_log , 1)
歡迎來到變化無常的 SQL Server 日志管理世界。
有些事情是錯誤的,但我認為沒有一些額外的信息,沒有人能告訴你更多。 例如,此數據庫是否曾用於事務性 SQL Server 復制? 如果事務尚未復制到訂閱者,這可能會導致類似的問題。
在此期間,這至少應該允許您終止日志文件:
您現在應該能夠縮小文件(如果執行備份不適合您)。
祝你好運!
確保數據庫的備份模式設置為簡單(有關不同模式的概述,請參見此處)。 這將避免 SQL Server 在重用空間之前等待事務日志備份。
使用dbcc shrinkfile
或Management Studio來收縮日志文件。
在設置備份模式之前,步驟 #2 將不執行任何操作。
這是使用查詢完成的最佳建議之一。 適合像我一樣擁有大量數據庫的人。 可以使用腳本運行它。
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 文件(日志文件)了)
(**重要):在此過程之前獲取數據庫的完整備份。
在該數據庫上運行“檢查點”。
分離該數據庫(右鍵單擊該數據庫並選擇任務 >> 分離...){如果您看到錯誤,請執行本文末尾的步驟}
將 MyDatabase.ldf 移動到另一個文件夾,您可以在與數據庫相同的文件夾中的硬盤中找到它(以防萬一您將來由於某些原因需要它,例如用戶執行了某些任務)。
附加數據庫(右鍵單擊數據庫並選擇附加...)
在附加對話框中刪除 .ldf 文件(顯示“找不到文件”注釋)並單擊“確定”。 (不要擔心在附件過程后會創建 ldf 文件。)
之后,會創建一個大小為 504 KB 的新日志文件!!!。
在步驟 2 中,如果您遇到數據庫被其他用戶使用的錯誤,您可以:
1.在主數據庫“sp_who2”上運行這個命令,看看是什么進程在使用你的數據庫。
2.讀取進程號,例如它是52並輸入“kill 52”,現在你的數據庫是空閑的,可以分離了。
如果使用數據庫的進程數量過多:
1.打開服務(在windows start中輸入services)找到SQL Server ...進程並重置它(右鍵單擊並選擇重置)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.