SQL2008如何清空壓縮數據庫日志
編寫人:左丘文
2015-4-10
近期在給一系統初始化資料時,不斷的導入導出,因此一不小心,就將數據的SQL(sql2008R2)的是日志檔弄得比數據庫還大,給系統部署帶來麻煩。因此想辦法能否快速的將日志文件縮小到令人滿意的504K。
今天在這里,我想與大家一起分享一下SQL2008中如何清空日志文檔,在此做個小結,以供參考。有興趣的同學,可以一同探討與學習一下,否則就略過吧。
1. 采用我之前在SQL2005中的方法,發現已不能正常運行:
--sql 2005
2 BACKUP LOG ECM WITH NO_LOG
3 DBCC SHRINKDATABASE(ECM)
2. 由於SQL2008對文件和日志管理進行了優化,所以以下語句在SQL2005中可以運行但在SQL2008中已經被取消:
方法一:
在SQL2008中清除日志就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。
2
3 USE [ master ]
4 GO
5 ALTER DATABASE ECM SET RECOVERY SIMPLE WITH NO_WAIT
6 GO
7 ALTER DATABASE ECM SET RECOVERY SIMPLE -- 簡單模式
8 GO
9 USE ECM
10 GO
11 DBCC SHRINKFILE (N ' SCS_log ' , 11, TRUNCATEONLY)
--這里要留意,要使用數據庫邏輯名
1 GO
3 GO
4
5 ALTER DATABASE ECM SET RECOVERY FULL WITH NO_WAIT
6
7 GO
8
9 ALTER DATABASE ECM SET RECOVERY FULL -- 還原為完全模式
10 GO
優點:此清除日志所運行消耗的時間短,90GB的日志在分鍾左右即可清除完畢,做完之后做個完全備份在分鍾內
即可完成。
缺點: 不過此動作最好不要經常使用,因為它的運行會帶來系統碎片。普通狀態下LOG和DIFF的備份即可截斷日志。
此語句使用的恰當環境:當系統的日志文件異常增大或者備份LOG時間太長可能影響生產的情況下使用。
方法二:
最簡單的一種方法是:
分離數據庫
剪切(注意是剪切,不是刪除)*.ldf到其他目錄
附加數據庫,選中*.mdf文件,附加時新建一個日志文件
確認沒有問題后,把日志文件刪除。
如碰到無法分離,請先停掉服務再進行。
3、有關更多的技術分享,大家可以加入我們的技術群。
歡迎加入技術分享群:238916811