SQL Server 2008 清空刪除日誌檔案 130G日誌 10秒內變10M
阿新 • • 發佈:2019-02-19
SQL2005: Backup Log DNName with no_log '這裡的DNName是你要收縮的資料庫名,自己注意修改下面的資料庫名,我就不再註釋了。 go dump transaction DNName with no_log go USE DNName DBCC SHRINKFILE (2) Go SQL2008: '在SQL2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。 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'DNName_Log' , 11, TRUNCATEONLY) GO '這裡的DNName_Log 如果不知道在sys.database_files裡是什麼名字的話,可以用以下注釋的語句進行查詢 'USE DNName 'GO 'SELECT file_id, nameFROM sys.database_files; 'GO USE [master] GO ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE DNName SET RECOVERY FULL --還原為完全模式 GO
SQL2008 的收縮日誌
由於SQL2008對檔案和日誌管理進行了優化,所以以下語句在SQL2005中可以執行但在SQL2008中已經被取消:
(SQL2005)
BackupLog DNName with no_log
godumptransaction DNName with no_log
goUSE DNName
DBCC SHRINKFILE (2)
Go--------------------------------------------------------------(SQL2008):
在SQL2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。
方案一:完全命令模式
USE[master
GOALTERDATABASE DNName SET RECOVERY SIMPLE --簡單模式GOUSE DNName
GODBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
GOUSE[master]GOALTERDATABASE DNName SET RECOVERY FULLWITH NO_WAIT
GOALTERDATABASE DNName SET RECOVERY FULL--
方案二:部分命令模式 + 任務-收縮-檔案(單個數據庫)
ALTERDATABASE DNName SET RECOVERY SIMPLE --簡單模式GO
右鍵-任務-收縮-檔案-確定 下來資料庫的日誌只保留了1M
ALTERDATABASE DNName SET RECOVERY FULL --還原為完全模式
GO
優點:此清除日誌所執行消耗的時間短,90GB的日誌在分鐘左右即可清除完畢,做完之後做個完全備份在分鐘內
即可完成。
缺點: 不過此動作最好不要經常使用,因為它的執行會帶來系統碎片。普通狀態下LOG和DIFF的備份即可截斷日誌。
此語句使用的恰當環境:當系統的日誌檔案異常增大或者備份LOG時間太長可能影響生產的情況下使用。