MSSQL數據庫表的增刪改時間長了日誌文件就會很大很大.....後果會很嚴重.現有如下兩種方法清除數據庫日誌.
方法一:數據庫分離附加法
1.備份:用此法之前請先備份數據庫
2.分離:右擊數據庫,點分離,選刪除連接,確定
3.刪除:找到數據庫文件位置,找到數據庫對應文件,將.LDF日誌文件刪除
4.附加:附加數據庫選擇剛纔分離的文件,數據庫詳細信息裏會顯示找不到日誌文件,選中刪除,確定,附加成功,會生成新日誌文件.
方法二: 收縮日誌法
(SQL2005)
Backup Log DNName with no_log
go
dump transaction DNName with no_log
go
USE DNName
DBCC SHRINKFILE (2)
Go
--------------------------------------------------------------
(SQL2008):
--在SQL2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。
use [TestDB]
--查看數據庫的recovery_model_desc類型
SELECT NAME, recovery_model_desc FROM sys.databases
--檢查日誌文件名稱
select name,size from sys.database_files
--簡單模式
alter database [TestDB] set recovery simple with NO_WAIT
alter database [TestDB] set recovery simple --簡單模式
use [TestDB]
--truncateonly 該數據文件只收縮到最後分配的程度
dbcc shrinkfile ('TestDB_log',0,truncateonly)
--收縮日誌文件大小(單位是M)
--DBCC SHRINKFILE (N'TestDB_log' , 10)
--恢復成FULL類型
alter database [TestDB] set recovery full with NO_WAIT
alter database [TestDB] set recovery full --完全模式
-- 優點:此清除日誌所運行消耗的時間短,90GB的日誌在分鐘左右即可清除完畢,做完之後做個完全備份在分鐘內
--即可完成。
--缺點: 不過此動作最好不要經常使用,因爲它的運行會帶來系統碎片。普通狀態下LOG和DIFF的備份即可截斷日誌。
--此語句使用的恰當環境:當系統的日誌文件異常增大或者備份LOG時間太長可能影響生產的情況下使用。