各位大大..這邊有個問題要麻煩大家幫忙想辦法(雖然這題目有點古董..但我還是在無解中..ldf天天長300MB多), 因為上網找了幾個壓縮語法(語法1,2,3)都還是沒用, 是否各位大大還有其他方式或是密招?? 另外有查到網友提到(語法4)查Status=2的話是要讓它變成0才能將交易資料檔壓縮變小, 請問這要如何作業?(Win2003 Server+MS SQL server 2003 Enterprise)
[語法1]
USE DB_name
BACKUP LOG DB_name WITH TRUNCATE_ONLY
DBCC SHRINKDATABASE (DB_name,1)
[語法2]
DUMP TRANSACTION DB_name WITH NO_LOG
BACKUP LOG DB_name WITH TRUNCATE_ONLY
DBCC SHRINKDATABASE ('DB_name',1,TRUNCATEONLY)
[語法3]以下網址提到的最後一個script範例
http://support.microsoft.com/kb/256650/zh-tw
[語法4]
DBCC LOGINFO(N'DB_name')
這個地方我看很多文件,都是霧煞煞.
我做後研究出的心得.
1.備份並裁切交易檔.
2.對交易檔做壓縮的動作.
而我做的維護計畫是每周完整備份.每天做差異備份.每小時做交易備份.
在這種情形下,資料庫就不會暴漲.
以前曾在網路上看過一篇相關的文章,連結如下:
http://www.nigelrivett.net/TransactionLogFileGrows_1.html
主要的關鍵似乎是在資料庫的復原模式要設為"簡單",但因為我很少使用資料庫,所以沒有實際測試過,希望這資料能幫上忙。
我使用的是 SQL Server 2000
如同樓上兩位大大所提,將復原模式設為簡單(Simple),再使用維護計畫做備份,這樣就不會有問題了
注意自動壓縮(Auto Shrink)選項要勾
一般交易檔與資料檔的比例配置,我記得以前上課的時候,老師是以 20% 或是 10% 的比例來教學
如果您之前未做上述的設定,但是 Transaction Log 已經長到非常大了
您必須要先將 Transaction Log 檔做 Shrink
透過 Enterprise Manager 選擇壓縮資料庫,以檔案壓縮的方式(選擇交易檔)
壓縮完再去做上面所提的設定,這樣交易檔案的 Size 才會 Down 下來
壓縮資料庫 Shrink Database 是沒有作用的,只是將儲存空間釋放出來,檔案大小不會壓縮
我不建議用簡單模式.
寫小程式或單機程式是沒差.但這樣位什麼買SQL Server?
寫企業程式或分散式系統.很多地方會用到交易.比如你做ATM..交易程式.在整個過程都會寫到Log檔.等雙方交易都沒問題.他才會寫到MDB檔.如果你沒用這種方式.直接動MDB的資料假如一方交易成功.另一方失敗,你的資料就不一致.
謝謝 pantc328 大的提醒與補充
因為沒有處理過大型的系統,所以對復原模型是否會對 two phase commit 的交易模式造成影響
這部份就沒有深入去研究了
資料一致與否, 不在於復原模式是否是"完整"及"簡單", 是在於程式的一個完整交易是否寫在同一個交易中. 簡單模式是交易完成後, 交易記錄會自動刪除, 因此交易記錄檔不會累加上去, 如同oralce noarchive ; 而復原模式完整主要是做當還原時, 是否要達到時間點回溯, 因此在交易完成後交易記錄不會自動刪除, 要由交易記錄備份後, 再刪除己備份部份, 如同 oracle archive.
資料一致與否, 不在於復原模式是否是"完整"及"簡單", 是在於程式的一個完整交易是否寫在同一個交易中. 簡單模式是交易完成後, 交易記錄會自動刪除, 因此交易記錄檔不會累加上去, 如同oralce noarchive ; 而復原模式完整主要是做當還原時, 是否要達到時間點回溯, 因此在交易完成後交易記錄不會自動刪除, 要由交易記錄備份後, 再刪除己備份部份, 如同 oracle archive.