SQL Server 2008下日志清理方法(非dump語句)


每次看到暴漲的數據庫日志就有些頭大,於是亂搜一通找個辦法把日志干掉,下次又頭大,又搜半天,於是還是寫篇blog,不用亂找了。

1.將數據庫設置成 簡單 模式

選擇要收縮的數據庫,點右鍵 屬性->選項,選擇 簡單模式

2.選擇任務->收縮->文件

 

3.選擇日志

 

或者用如下語句

代碼
USE   [ master ]
GO
ALTER   DATABASE  DNName  SET  RECOVERY SIMPLE  WITH  NO_WAIT
GO
ALTER   DATABASE  DNName  SET  RECOVERY SIMPLE
GO
USE  DNName 
GO
DBCC  SHRINKFILE (N ' LogFileName '  ,  0 ,TRUNCATEONLY)
GO
USE   [ master ]
GO
ALTER   DATABASE  DNName  SET  RECOVERY  FULL   WITH  NO_WAIT
GO
ALTER   DATABASE  DNName  SET  RECOVERY  FULL
GO





SQL Server 2000要清理日志使用的是dump語句,但是在SQL Server2008里,這個語句不管用了,如果日志文件很大,比如超過1G,就需要截斷一下日志文件以加快sqlserver的運行速度,在SQL Server2008里,方法改為:

有數據庫 xxdb 在 SQL Server 2008 下,日志文件已經超過1G。

以往使用BACKUP語句-BACKUP LOG xxdb WITH NO_LOG 已經失效,在查閱 MSDN 之后發現 MS 提供的標准截斷日志語句已經變為了 “BACKUP LOG 語句不指定 WITH COPY_ONLY”

使用語句 BACKUP LOG xxdb to disk='x:\work\1.bak'  成功將日志文件備份,並截斷日志文件。這里x:代表你想要備份文件的盤符。

然后使用 DBCC SHRINKFILE (xxdb_log,10)  收縮日志文件到 10M

總結:

完整的收縮日志文件的 T-SQL 語句:

 

 

BACKUP LOG xxdb to disk='x:\work\1.bak'
DBCC SHRINKFILE (xxdb_log,10)
GO

--

BACKUP LOG <db_name> to disk=<'backupfilename'>
DBCC SHRINKFILE (<log_filename>,10)
GO

里面的x:\work是隨意設置的。當然也可以收縮到比如5M或1M。



免責聲明!

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



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