24h購物| | PChome| 登入
2009-08-27 17:30:33| 人氣17,996| 回應1 | 上一篇 | 下一篇

壓縮資料庫的Log資料,讓.ldf檔案大小減少

推薦 0 收藏 0 轉貼0 訂閱站台

資料來源:魔神仔

動作之前請先備份

資料庫在建立後
經過一段時間的AUID後
往往檔案大小會變成非常龐大
造成某些使用上的不方便
我們可以下段SQL指令也讓它壓縮一下

SQL語法

--(1)截斷交易記錄檔
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(假設檔案有10MBTargetSize指定8MB,則原檔案最後2MB的資料會被搬移至前面的8MB存放,而至少空出2MB的空間)NOTRUNCATE指的是空出來的空間供Sql Server使用不還給OSTRUNCATEONLY就是空出的空間還給OS


藍色小舖有篇文章提到:

SHRINKFILE是去作實體檔案的縮小,可是等資料一異動Log檔就又長大了~_~
比較正確的作法,是做好備份後,清除Log檔(BACKUP LOG dbName WITH NO_LOG)
清除後檔案大小不變,但內容是空的,到下次備份之前,沒意外的話應該是夠用的
 
部落格主大李的文章, 也很實用

台長: nut
人氣(17,996) | 回應(1)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 技術 |
此分類下一篇:如何連到另一台電腦的SQL
此分類上一篇:加快 Visual Studio 執行速度與提升工作效率 (除錯指令)

威爾剛
感謝分享!

http://www.yyj.tw/
2019-12-20 12:21:40
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文