搜尋此網誌

2014年12月27日 星期六

如何清除交易記錄

參考原文:http://vito-sql.blogspot.tw/2013/07/blog-post_9.html

SQL 資料庫系統的 Log記錄檔,會隨著系統的使用,不停的成長。

在 SQL 2005 前(含),使用 Backup log 來清除(Truncate)交易記錄。

--(1)truncate log in log file
BACKUP LOG [DBName] WITH TRUNCATE_ONLY
 
--(2)compress log file
DBCC SHRINKFILE([DBName_log],2


BACKUP LOG 指令原本是用來備份 log 用的,因為加上了 WITH TRUNCATE_ONLY 選項,
所以不會真正備份記錄檔,只會移除非使用的交易記錄。

DBCC SHRINKFILE 是把實體的Log檔案縮小,可是只要資料繼續異動,Log檔就又會繼續長大。
比較正確的作法,是執行 LOG 備份時,加上 WITH NO_LOG 選項以便同時清除Log內容。
這樣子,在清除Log後,雖然Log檔案大小不變,但內容是空的,可提供資料異動時的Log使用。
1
2
3
BACKUP LOG TestDB_Log WITH NO_LOG;

在 SQL 2008 環境下,上述用法已被停用,須改用「復原模式」為「簡單」來清空交易記錄。

--1) 將資料庫 Northwind 切換為「簡單復原模式」,便會自動截斷交易記錄。
ALTER DATABASE TestDB SET RECOVERY SIMPLE  
 
--2) 壓縮交易記錄檔
DBCC SHRINKFILE(TestDB_Log, 2)
 
--3) 若要使用備份交易記錄檔(*.ldf),再將資料庫 Northwind 切換回「完整復原模式」
ALTER DATABASE TestDB SET RECOVERY FULL  


沒有留言:

張貼留言

搜尋此網誌