線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:13267
推到 Plurk!
推到 Facebook!

請問有關Transaction Log太大如何處理

答題得分者是:P.D.
shyu_ting
一般會員


發表:13
回覆:25
積分:12
註冊:2002-11-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-04 11:10:42 IP:203.70.xxx.xxx 未訂閱
如題,SQL Server的一個database 之transaction log長得太大了,不知有何 處理方式可以將它縮小...最好是以sql語法就可解決的方式...謝謝
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-04 11:50:46 IP:203.73.xxx.xxx 未訂閱
引言: 如題,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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-04 13:24:47 IP:203.70.xxx.xxx 未訂閱
RaynorPao 您所指示的地方我去試了,但發現transaction log 的大小只能修改增大,但無法變小,而我現在的情形就是transactoin log已經長到200多MB了,不知有沒有其它方法可以改小... 感謝raynopao的回覆
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-04 13:39:16 IP:211.78.xxx.xxx 未訂閱
引言: 如題,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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-04 13:57:30 IP:211.21.xxx.xxx 未訂閱
如果我沒記錯的話,只要做做「完整備份」.就會將該Log清空了. 該Log是SQL Server用來「以防萬一」用的. 當然,您也可以只清除該Log,但是系統資料的還原可能性就降低了. 試看看唄
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-05 00:59:34 IP:61.66.xxx.xxx 未訂閱
引言: 如果我沒記錯的話,只要做做「完整備份」.就會將該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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-05 08:20:46 IP:192.168.xxx.xxx 未訂閱
引言: 不過之前站長曾經有提供一個針對SQL log管理的資訊, 我一下忘了那家, 那套軟體我用過試用, 的確在log的處理上做到相當程式的管理, 但很貴!貴!貴!
是很貴,一套好像要五萬多塊台幣! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
xBaby
一般會員


發表:1
回覆:15
積分:8
註冊:2002-08-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-11-05 10:55:01 IP:61.70.xxx.xxx 未訂閱
我的解決方案是: 如果交易記錄檔不是必須的話:   1.選取該資料庫所有工作->備份資料庫->交易記錄檔(復原模型不為『簡易』時)並執行之。   2.選取該資料庫所有工作->壓縮資料庫->不做設定->直接確定,應可空出大量空間。   3.設該資料庫的屬性頁->復原模型為『簡易』另下方設定處自動壓縮打鈎。   4.從此以後,交易記錄檔不再暴增(很小哦)。    如果交易記錄是必須的話:   使用上述之 1 及 2 並設排程(Sql 內有提供,自行參考),亦可自動控制其大小    說明:   1.選取該資料庫所有工作->備份資料庫->交易記錄檔:目的為『確認交易』(自己想的),完成後,其暫用空間仍存在,但已釋出交由>壓縮資料庫:可將上述空間完全釋出交由
ksstone
一般會員


發表:0
回覆:7
積分:1
註冊:2002-07-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-11-05 15:32:40 IP:210.244.xxx.xxx 未訂閱
引言:
引言: 如題,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! 只是這樣的動作花了我一天時間! 以上純屬個人意見~~
關於這種又臭又長的log實在令人又愛又恨, 小弟有一個方法可以讓它變小, 不過有失敗的風險,各位嘗試前請先做好備份工作. 首先卸離資料庫,到ms-sql的data目錄下找到你卸下的資料庫檔案, 有兩個: △△△.mdf........資料檔 △△△.ldf........log檔 然後將△△△.ldf改名(或是刪除),在用附加資料庫還原資料庫, 此時會顯示原先的△△△.ldf前面會是個xx(找不到了嘛), 不管他,硬上,當資料庫付加上去後,就會有一個新的log file. ps:曾經有附加失敗的狀況,原因不明(不過很少,僅發生一兩次,用備份還原既可) ps:通常我是用來對付交易頻繁的資料庫
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-11-05 16:36:42 IP:61.66.xxx.xxx 未訂閱
引言: 關於這種又臭又長的log實在令人又愛又恨, 小弟有一個方法可以讓它變小, 不過有失敗的風險,各位嘗試前請先做好備份工作. 首先卸離資料庫,到ms-sql的data目錄下找到你卸下的資料庫檔案, 有兩個: △△△.mdf........資料檔 △△△.ldf........log檔 然後將△△△.ldf改名(或是刪除),在用附加資料庫還原資料庫, 此時會顯示原先的△△△.ldf前面會是個xx(找不到了嘛), 不管他,硬上,當資料庫付加上去後,就會有一個新的log file. ps:曾經有附加失敗的狀況,原因不明(不過很少,僅發生一兩次,用備份還原既可) ps:通常我是用來對付交易頻繁的資料庫
這個方法我試過, 檔案(MDF)容量在100M以下似乎可行, 但超過就掛了, 僅提供參考!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-11-05 16:38:01 IP:61.66.xxx.xxx 未訂閱
引言:
引言: 不過之前站長曾經有提供一個針對SQL log管理的資訊, 我一下忘了那家, 那套軟體我用過試用, 的確在log的處理上做到相當程式的管理, 但很貴!貴!貴!
是很貴,一套好像要五萬多塊台幣! ~~~Delphi K.Top討論區站長~~~
站長, 不只哦! 它又有分版本, 我問的UNLIMITED版本要近20萬!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-11-05 16:40:49 IP:61.66.xxx.xxx 未訂閱
引言: 我的解決方案是: 如果交易記錄檔不是必須的話: 1.選取該資料庫所有工作->備份資料庫->交易記錄檔(復原模型不為『簡易』時)並執行之。 2.選取該資料庫所有工作->壓縮資料庫->不做設定->直接確定,應可空出大量空間。 3.設該資料庫的屬性頁->復原模型為『簡易』另下方設定處自動壓縮打鈎。 4.從此以後,交易記錄檔不再暴增(很小哦)。 如果交易記錄是必須的話: 使用上述之 1 及 2 並設排程(Sql 內有提供,自行參考),亦可自動控制其大小 說明: 1.選取該資料庫所有工作->備份資料庫->交易記錄檔:目的為『確認交易』(自己想的),完成後,其暫用空間仍存在,但已釋出交由>壓縮資料庫:可將上述空間完全釋出交由 >< face="Verdana, Arial, Helvetica"> 提到壓縮這一項, 我查過國內一些作者所撰寫的書, 提供資料庫如果執行壓縮以後, 會降低SQL資料庫的存取效能, 這點不知各位是否有經驗? 害我現在都不太敢使用壓縮功能!
xBaby
一般會員


發表:1
回覆:15
積分:8
註冊:2002-08-14

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-11-05 17:01:16 IP:61.70.xxx.xxx 未訂閱
引言:
引言: 我的解決方案是: 如果交易記錄檔不是必須的話: 1.選取該資料庫所有工作->備份資料庫->交易記錄檔(復原模型不為『簡易』時)並執行之。 2.選取該資料庫所有工作->壓縮資料庫->不做設定->直接確定,應可空出大量空間。 3.設該資料庫的屬性頁->復原模型為『簡易』另下方設定處自動壓縮打鈎。 4.從此以後,交易記錄檔不再暴增(很小哦)。 如果交易記錄是必須的話: 使用上述之 1 及 2 並設排程(Sql 內有提供,自行參考),亦可自動控制其大小 說明: 1.選取該資料庫所有工作->備份資料庫->交易記錄檔:目的為『確認交易』(自己想的),完成後,其暫用空間仍存在,但已釋出交由>壓縮資料庫:可將上述空間完全釋出交由 >< face="Verdana, Arial, Helvetica"> 提到壓縮這一項, 我查過國內一些作者所撰寫的書, 提供資料庫如果執行壓縮以後, 會降低SQL資料庫的存取效能, 這點不知各位是否有經驗? 害我現在都不太敢使用壓縮功能!
『壓縮』會不會降低SQL資料庫的存取效能,未經證實的事情,我不敢斷言;不過這裡所提及之內容,是我從書上學到並實作出的結論,且這裡的『壓縮』,是用來釋出空間,並非針對資料進行壓縮,我想應不致於會降低SQL資料庫的存取效能吧。
ksstone
一般會員


發表:0
回覆:7
積分:1
註冊:2002-07-16

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-11-05 17:02:18 IP:210.244.xxx.xxx 未訂閱
[/quote] 這個方法我試過, 檔案(MDF)容量在100M以下似乎可行, 但超過就掛了, 僅提供參考! [/quote] 咦?!應該不會因為超過100M就不行喔, 曾經幫客戶作過,有一個交易頻繁的db, mdf有1G多,ldf快2G,為了方便轉資料到note book, 所以只搬mdf,還是可以掛的上喔,供你參考.
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-11-05 17:08:48 IP:203.204.xxx.xxx 未訂閱
引言: 提到壓縮這一項, 我查過國內一些作者所撰寫的書, 提供資料庫如果執行壓縮以後, 會降低SQL資料庫的存取效能, 這點不知各位是否有經驗? 害我現在都不太敢使用壓縮功能!
P.D.兄 SQL Server 2000 可設定 Log不夠時自動成長,所以存取效能降低也不會降太多,不就自動成長空間的一點點時間(這是我猜的),且我也不相信他是真的壓縮,就和Access一樣,他的壓縮只是將不用的空間釋放出來(我猜的),所以客戶那裡Log變大時,我都直接壓,也沒見他們反映有變慢的問題,所以你就放心的壓吧,不過不要壓到最小,至少是最小的幾倍(自己斟酌)。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-11-05 23:00:09 IP:61.66.xxx.xxx 未訂閱
[咦?!應該不會因為超過100M就不行喔, 曾經幫客戶作過,有一個交易頻繁的db, mdf有1G多,ldf快2G,為了方便轉資料到note book, 所以只搬mdf,還是可以掛的上喔,供你參考. [/quote] 嗯! 值得參考, 有空我再測試看看! 謝謝!
gagne
一般會員


發表:3
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-11-06 20:21:57 IP:61.221.xxx.xxx 未訂閱
在資料庫的"壓縮資料庫"中可以選擇"壓縮檔案" 在做過完整備份後 直接針對log進行壓縮可以得到不錯的效果 不過在MS sql7.0中,有一個 Truncate Log 的選項 可以在備份完後有效的減少LOG的大小 在SQL2000中我就找不到這個選項,有時英文版看慣了.. 裝了SQL2000中文版突然覺得怪怪的
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-11-06 22:50:24 IP:61.66.xxx.xxx 未訂閱
引言: 在資料庫的"壓縮資料庫"中可以選擇"壓縮檔案" 在做過完整備份後 直接針對log進行壓縮可以得到不錯的效果 不過在MS sql7.0中,有一個 Truncate Log 的選項 可以在備份完後有效的減少LOG的大小 在SQL2000中我就找不到這個選項,有時英文版看慣了.. 裝了SQL2000中文版突然覺得怪怪的
SQL2000中, 在[計劃]作業中可以設定 LOG的備份要保留多少日子的資料, 取代了Truncate Log的功能, 可是我測的結果好像也少不了多少, 不知有沒有人可以確認?
系統時間:2024-05-18 22:01:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!