出處:http://charlesbc.blogspot.tw/2011/01/sql-server-log.html
SQL Server Log 檔案太大了!
昨天去上課。晚上下課一回來,同事就抱怨系統太慢了。
今天早上剛好是民國100年元旦,就來公司檢查有無百年蟲問題吧。順便 Check 一下系統太慢的問題。
一檢查,SQL Server 磁碟沒空間了。當下就知道為什麼慢了。
當務之急,就是將超大的資料庫 log 檔備份並 shink。
SQL Server 2005
以前在 SQL Server 2005 指令會這樣下use master go --備份目前的 log backup log DatabaseName to disk='c:\db.log' WITH NOFORMAT --將 log 清除 BACKUP LOG DatabaseName WITH TRUNCATE_ONLY --找到 DatabaseNameLog 的值 use DatabaseName go select name from sys.database_files where type_desc = 'log' --縮減 log file 到 1MB DBCC SHRINKFILE(DatabaseNameLog, 1)
SQL Server 2008
到了 SQL Server 2008,Trancate_only 的指令正式被取消了。由於資料庫的復原模式為簡單的情形下是不記錄所有的 log資料的。我們可以利用這一點清除 log 資料。因此,替代的方法,是將資料庫的復原模式先換成簡單模式,再調整為完整。指令如下
use master go --備份目前的 log backup log DatabaseName to disk='c:\db.log' WITH NOFORMAT --將資料庫復原模式切換到簡單模式 ALTER DATABASE DatabaseName SET RECOVERY SIMPLE WITH NO_WAIT --找到 DatabaseNameLog 的值 use DatabaseName go select name from sys.database_files where type_desc = 'log' --縮減 log file 到 1MB DBCC SHRINKFILE(DatabaseNameLog, 1) --將資料庫復原模式切換到完整模式 USE [master] GO ALTER DATABASE [DatabaseName] SET RECOVERY FULL WITH NO_WAIT