壓縮資料庫的Log資料,讓.ldf檔案大小減少
資料來源:魔神仔
動作之前請先備份
資料庫在建立後
經過一段時間的AUID後
往往檔案大小會變成非常龐大
造成某些使用上的不方便
我們可以下段SQL指令也讓它壓縮一下
SQL語法
BACKUP LOG [Web_TTCT] --Web_TTCT:資料庫名稱
WITH TRUNCATE_ONLY
--(2)顯示資料庫檔案,找出交易記錄檔的邏輯檔名
EXEC sp_helpdb 'Web_TTCT' --Web_TTCT:資料庫名稱
--(3)壓縮交易記錄檔
USE Web_TTCT --Web_TTCT:資料庫名稱
DBCC SHRINKFILE([TTCT_log],2) --TTCT_log:ldf檔的邏輯檔名,在(2)可以找出
資料來源:SmartIT
以下是重整SQL交易紀錄檔的Command
可有效壓縮交易紀錄檔的容量
跟大家分享
1.截斷交易記錄檔
BACKUP LOG '資料庫名稱' WITH TRUNCATE_ONLY
2.顯示資料庫檔案,找出交易記錄檔的邏輯檔名
EXEC sp_helpdb '資料庫名稱'
3.壓縮交易記錄檔
DBCC SHRINKFILE('ldf的檔案名稱',2)-2的意思為2MB
範例:
以下就是可以將SmartIT資料庫的交易記錄檔縮小為2MB
BACKUP LOG SmartIT WITH TRUNCATE_ONLY
exec sp_helpdb SmartIT
DBCC SHRINKFILE('SmartIT_Log',2) --SmartIT_Log 為交易記錄檔名稱,此Command執行後,只會剩下2MB
另一個強制清除交易紀錄檔的設定
use DB_Name
Backup Log DB_Name with TRUNCATE_ONLY
dbcc shrinkfile (DB_Name_log , truncateonly)
說明:
執行Backup Log with Truncate_Only 其用法是備份資料庫的Log檔,由於我們在上述語法中沒有指定備份的裝置為何,Sql Server即會認為此動作為單純要把已交易完成的Log資料清空(已交易完成的資料所指即為已commit的資料),而Truncate_Only的選項則是告訴Sql Server目的在清空Log之空間,至於清出的空間則由Sql Server管理,不還給OS。
Backup Log完成後,要再執行DBCC SHRINKFILE ,,{NOTRUNCATE | TRUNCATEONLY }
其作為為將資料的空間作重整及壓縮,類似硬碟重組的功能,FileName為指定要壓縮的資料檔名(在Enterprise選擇資料庫按右鍵選內容,選交易紀錄檔的Tag即可看到檔案名稱),TargetSize指的是要將資料壓縮至多少MB(假設檔案有10MB,TargetSize指定8MB,則原檔案最後2MB的資料會被搬移至前面的8MB存放,而至少空出2MB的空間)。NOTRUNCATE指的是空出來的空間供Sql Server使用不還給OS,TRUNCATEONLY就是空出的空間還給OS。
藍色小舖有篇文章提到:
比較正確的作法,是做好備份後,清除Log檔(BACKUP LOG dbName WITH NO_LOG)
清除後檔案大小不變,但內容是空的,到下次備份之前,沒意外的話應該是夠用的
感謝分享!
http://www.yyj.tw/