請問有關Transaction Log太大如何處理 |
答題得分者是:P.D.
|
shyu_ting
一般會員 發表:13 回覆:25 積分:12 註冊:2002-11-04 發送簡訊給我 |
|||
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 如題,SQL Server的一個database 之transaction log長得太大了,不知有何 處理方式可以將它縮小...最好是以sql語法就可解決的方式...謝謝 (1)選擇 開始/Microsoft SQL Server/Enterprise Manager 出現 SQL Server Enterprise Manager 畫面 (2)點選到你的資料庫,按右鍵,選擇「內容」,出現「xxx屬性」 (3)點選到「交易記錄檔」tab,右下角有一個「檔案大小上限」 一般 default 值是「不限制檔案成長」,你可以把它改成「限制 檔案成長」,然後大小自行設定-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
||
shyu_ting
一般會員 發表:13 回覆:25 積分:12 註冊:2002-11-04 發送簡訊給我 |
|||
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 如題,SQL Server的一個database 之transaction log長得太大了,不知有何 處理方式可以將它縮小...最好是以sql語法就可解決的方式...謝謝之前我也為這個問題大傷腦筋, 不過 RaynorPao兄說的方式會有一點問題(這是就我個人實際操作經驗測得來的, RaynorPao 請勿見怪) 我的SQL有3000萬筆記錄, 當在處理一次大批的匯入或匯出時, 如果限制 log 成長, 會造成 sql 錯誤, 告訴你 log 已滿, 無法繼續作業, 所以我的做法是先建一個新的資料庫, 將原資料庫內的table匯出到新資料庫, 再來刪除掉舊資料庫後重建一個一模一樣的原資料庫出來, 然後將新建出來的原資料庫以滑鼠右鍵選內容-> 選項 -> [模型]將完整模式改為大量登入, 再把新資料庫重新匯入原資料庫, 最後再改回完整, 這樣你的 log就會少很多(以上做法是依我的3000萬做測試說明) 另外, 我發現 sql 不論是限制資料庫或log成長, 最後都會導致問題, 所以我現在都不敢再限制任何東東! ps:我的 log 已經為4G, 恐怖吧! 資料庫為 7G, 但是這樣做下來, 資料庫仍為7G, 而 log 只有900MB! 只是這樣的動作花了我一天時間! 以上純屬個人意見~~ |
||
jaya
初階會員 發表:9 回覆:70 積分:30 註冊:2002-05-22 發送簡訊給我 |
|||
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 如果我沒記錯的話,只要做做「完整備份」.就會將該Log清空了. 該Log是SQL Server用來「以防萬一」用的. 當然,您也可以只清除該Log,但是系統資料的還原可能性就降低了. 試看看唄回 jaya兄! 在這部份, 我在 SQL上曾用了很多的時間在測試, 如果我記得沒有錯, 完整備份似並無法可以做到清除log(我不能百分百肯定, 但測了數十次), 而且千萬不要刪除log檔, 我曾經天真到想說刪除原log檔, 再自己產生一個log檔, 結果是讓資料庫徹底毀損(資料庫沒壞, 但是無法讀取, 回存, 重整, 備份), 當然, 這只是我實際使用結果向各位報告(因為也曾有多位前輩告訴我完整備份就可以), 如果引述上有不正確的, 也歡迎各位網友給予指正! PS:SQL的log會記錄所有對該資料庫異動的情況, 所以要將已刪除或修改過的資料再還原, 都可以從 log檔取出, 不過MS似乎並沒有發展log檔的管理系統, 所以一般人是無法自log中取得任何資訊回原來的sqlserver, 不過之前站長曾經有提供一個針對SQL log管理的資訊, 我一下忘了那家, 那套軟體我用過試用, 的確在log的處理上做到相當程式的管理, 但很貴!貴!貴! 發表人 - P.D. 於 2002/11/05 01:06:57 |
||
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|||
xBaby
一般會員 發表:1 回覆:15 積分:8 註冊:2002-08-14 發送簡訊給我 |
我的解決方案是:
如果交易記錄檔不是必須的話:
1.選取該資料庫所有工作->備份資料庫->交易記錄檔(復原模型不為『簡易』時)並執行之。
2.選取該資料庫所有工作->壓縮資料庫->不做設定->直接確定,應可空出大量空間。
3.設該資料庫的屬性頁->復原模型為『簡易』另下方設定處自動壓縮打鈎。
4.從此以後,交易記錄檔不再暴增(很小哦)。 如果交易記錄是必須的話:
使用上述之 1 及 2 並設排程(Sql 內有提供,自行參考),亦可自動控制其大小 說明:
1.選取該資料庫所有工作->備份資料庫->交易記錄檔:目的為『確認交易』(自己想的),完成後,其暫用空間仍存在,但已釋出交由>壓縮資料庫:可將上述空間完全釋出交由
|
||
ksstone
一般會員 發表:0 回覆:7 積分:1 註冊:2002-07-16 發送簡訊給我 |
引言:關於這種又臭又長的log實在令人又愛又恨, 小弟有一個方法可以讓它變小, 不過有失敗的風險,各位嘗試前請先做好備份工作. 首先卸離資料庫,到ms-sql的data目錄下找到你卸下的資料庫檔案, 有兩個: △△△.mdf........資料檔 △△△.ldf........log檔 然後將△△△.ldf改名(或是刪除),在用附加資料庫還原資料庫, 此時會顯示原先的△△△.ldf前面會是個xx(找不到了嘛), 不管他,硬上,當資料庫付加上去後,就會有一個新的log file. ps:曾經有附加失敗的狀況,原因不明(不過很少,僅發生一兩次,用備份還原既可) ps:通常我是用來對付交易頻繁的資料庫引言: 如題,SQL Server的一個database 之transaction log長得太大了,不知有何 處理方式可以將它縮小...最好是以sql語法就可解決的方式...謝謝之前我也為這個問題大傷腦筋, 不過 RaynorPao兄說的方式會有一點問題(這是就我個人實際操作經驗測得來的, RaynorPao 請勿見怪) 我的SQL有3000萬筆記錄, 當在處理一次大批的匯入或匯出時, 如果限制 log 成長, 會造成 sql 錯誤, 告訴你 log 已滿, 無法繼續作業, 所以我的做法是先建一個新的資料庫, 將原資料庫內的table匯出到新資料庫, 再來刪除掉舊資料庫後重建一個一模一樣的原資料庫出來, 然後將新建出來的原資料庫以滑鼠右鍵選內容-> 選項 -> [模型]將完整模式改為大量登入, 再把新資料庫重新匯入原資料庫, 最後再改回完整, 這樣你的 log就會少很多(以上做法是依我的3000萬做測試說明) 另外, 我發現 sql 不論是限制資料庫或log成長, 最後都會導致問題, 所以我現在都不敢再限制任何東東! ps:我的 log 已經為4G, 恐怖吧! 資料庫為 7G, 但是這樣做下來, 資料庫仍為7G, 而 log 只有900MB! 只是這樣的動作花了我一天時間! 以上純屬個人意見~~ |
||
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 關於這種又臭又長的log實在令人又愛又恨, 小弟有一個方法可以讓它變小, 不過有失敗的風險,各位嘗試前請先做好備份工作. 首先卸離資料庫,到ms-sql的data目錄下找到你卸下的資料庫檔案, 有兩個: △△△.mdf........資料檔 △△△.ldf........log檔 然後將△△△.ldf改名(或是刪除),在用附加資料庫還原資料庫, 此時會顯示原先的△△△.ldf前面會是個xx(找不到了嘛), 不管他,硬上,當資料庫付加上去後,就會有一個新的log file. ps:曾經有附加失敗的狀況,原因不明(不過很少,僅發生一兩次,用備份還原既可) ps:通常我是用來對付交易頻繁的資料庫這個方法我試過, 檔案(MDF)容量在100M以下似乎可行, 但超過就掛了, 僅提供參考! |
||
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|||
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 我的解決方案是: 如果交易記錄檔不是必須的話: 1.選取該資料庫所有工作->備份資料庫->交易記錄檔(復原模型不為『簡易』時)並執行之。 2.選取該資料庫所有工作->壓縮資料庫->不做設定->直接確定,應可空出大量空間。 3.設該資料庫的屬性頁->復原模型為『簡易』另下方設定處自動壓縮打鈎。 4.從此以後,交易記錄檔不再暴增(很小哦)。 如果交易記錄是必須的話: 使用上述之 1 及 2 並設排程(Sql 內有提供,自行參考),亦可自動控制其大小 說明: 1.選取該資料庫所有工作->備份資料庫->交易記錄檔:目的為『確認交易』(自己想的),完成後,其暫用空間仍存在,但已釋出交由>壓縮資料庫:可將上述空間完全釋出交由 >>< face="Verdana, Arial, Helvetica"> 提到壓縮這一項, 我查過國內一些作者所撰寫的書, 提供資料庫如果執行壓縮以後, 會降低SQL資料庫的存取效能, 這點不知各位是否有經驗? 害我現在都不太敢使用壓縮功能! |
||
xBaby
一般會員 發表:1 回覆:15 積分:8 註冊:2002-08-14 發送簡訊給我 |
引言:引言: 我的解決方案是: 如果交易記錄檔不是必須的話: 1.選取該資料庫所有工作->備份資料庫->交易記錄檔(復原模型不為『簡易』時)並執行之。 2.選取該資料庫所有工作->壓縮資料庫->不做設定->直接確定,應可空出大量空間。 3.設該資料庫的屬性頁->復原模型為『簡易』另下方設定處自動壓縮打鈎。 4.從此以後,交易記錄檔不再暴增(很小哦)。 如果交易記錄是必須的話: 使用上述之 1 及 2 並設排程(Sql 內有提供,自行參考),亦可自動控制其大小 說明: 1.選取該資料庫所有工作->備份資料庫->交易記錄檔:目的為『確認交易』(自己想的),完成後,其暫用空間仍存在,但已釋出交由>壓縮資料庫:可將上述空間完全釋出交由 >>< face="Verdana, Arial, Helvetica"> 提到壓縮這一項, 我查過國內一些作者所撰寫的書, 提供資料庫如果執行壓縮以後, 會降低SQL資料庫的存取效能, 這點不知各位是否有經驗? 害我現在都不太敢使用壓縮功能!『壓縮』會不會降低SQL資料庫的存取效能,未經證實的事情,我不敢斷言;不過這裡所提及之內容,是我從書上學到並實作出的結論,且這裡的『壓縮』,是用來釋出空間,並非針對資料進行壓縮,我想應不致於會降低SQL資料庫的存取效能吧。 |
||
ksstone
一般會員 發表:0 回覆:7 積分:1 註冊:2002-07-16 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 提到壓縮這一項, 我查過國內一些作者所撰寫的書, 提供資料庫如果執行壓縮以後, 會降低SQL資料庫的存取效能, 這點不知各位是否有經驗? 害我現在都不太敢使用壓縮功能!P.D.兄 SQL Server 2000 可設定 Log不夠時自動成長,所以存取效能降低也不會降太多,不就自動成長空間的一點點時間(這是我猜的),且我也不相信他是真的壓縮,就和Access一樣,他的壓縮只是將不用的空間釋放出來(我猜的),所以客戶那裡Log變大時,我都直接壓,也沒見他們反映有變慢的問題,所以你就放心的壓吧,不過不要壓到最小,至少是最小的幾倍(自己斟酌)。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|||
gagne
一般會員 發表:3 回覆:12 積分:3 註冊:2002-04-15 發送簡訊給我 |
|||
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 在資料庫的"壓縮資料庫"中可以選擇"壓縮檔案" 在做過完整備份後 直接針對log進行壓縮可以得到不錯的效果 不過在MS sql7.0中,有一個 Truncate Log 的選項 可以在備份完後有效的減少LOG的大小 在SQL2000中我就找不到這個選項,有時英文版看慣了.. 裝了SQL2000中文版突然覺得怪怪的SQL2000中, 在[計劃]作業中可以設定 LOG的備份要保留多少日子的資料, 取代了Truncate Log的功能, 可是我測的結果好像也少不了多少, 不知有沒有人可以確認? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |