數據庫日志文件太大如何處理


今天遇到一個狀況,一個數據庫的日志文件過大,導致占用了過多的服務器硬盤空間。需要對於數據庫的日志文件進行瘦身。網上查詢了一下資料,分享幾個鏈接。

由於SQL2008對文件和日志管理進行了優化,所以部分在SQL2005中可以運行,在SQL2008中已經被取消。

如:DUMP TRANSACTION 庫名 WITH NO_LOG

參考文章

http://jimshu.blog.51cto.com/3171847/932669

http://www.cnblogs.com/TLLi/archive/2012/07/15/2592042.html

http://www.cnblogs.com/tylerdonet/p/3550434.html

http://www.cnblogs.com/qingyuan/p/4238071.html

http://www.cnblogs.com/Joe-T/archive/2011/12/22/2298051.html

 

自己總結

1.收縮數據(一種是界面操作,一種是執行sql語句,個人傾向於執行sql語句)

界面操作

第一,

-- 修改數據為SIMPLE類型

ALTER DATABASE 數據庫名 SET RECOVERY SIMPLE   

GO

第二,

選擇要收縮的數據庫,右鍵-->任務-->收縮-->文件

 

第三,

ALTER DATABASE 數據庫名 SET RECOVERY FULL
GO

 

sql語句執行

-- 檢查日志文件名稱
USE 數據庫名
SELECT NAME, size FROM sys.database_files

一般_log 就是日志文件,記錄一下

 

最終執行語句

USE master
GO
ALTER DATABASE 數據庫名 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 數據庫名 SET RECOVERY SIMPLE   
GO

USE 數據庫名 
GO
DBCC SHRINKFILE (N'數據庫日志名' , 2, TRUNCATEONLY)
GO

USE master
GO
ALTER DATABASE 數據庫名 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 數據庫名 SET RECOVERY FULL   
GO

 

以下是常用語句

-- 檢查日志文件名稱
USE 數據庫名
SELECT NAME, size FROM sys.database_files

-- 查看數據庫的recovery_model_desc類型
SELECT NAME, recovery_model_desc FROM sys.databases

-- 如果是FULL類型,修改為SIMPLE類型  
ALTER DATABASE ChinaKnowledgeDB SET Recovery simple

-- 收縮日志文件大小(單位是M)
DBCC SHRINKFILE (N'ChinaKnowledgeDB_log' , 10)

-- 恢復成FULL類型
ALTER DATABASE ChinaKnowledgeDB SET Recovery FULL

總結:收縮日志一定要把數據變為簡單模式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM