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