SQL SERVER 清空日誌

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時間太長可能影響生產的情況下使用。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章