今天遇到一個狀況,一個數據庫的日志文件過大,導致占用了過多的服務器硬盤空間。需要對於數據庫的日志文件進行瘦身。網上查詢了一下資料,分享幾個鏈接。
由於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
總結:收縮日志一定要把數據變為簡單模式