none
sql server 2008 r2 無法清除(壓縮)log.. RRS feed

  • 問題

  • sql:sql server 2008 r2 Enterprise

    系統:win server 2003 r2 enterprise x64 edition sp2

     

    原本剛還原的資料庫log檔才不到10MB,(原始資料庫就快50GB),但一備份完成,他就自動變成31GB,而且初始值也跟著變大,

    再執行以下語法,就會無法壓回剛還原時的大小

    sql語法
    USE MESWIPDB;   

    02 GO 

    03 -- Truncate the log by changing the database recovery model to SIMPLE. 

    04 ALTER DATABASE MESWIPDB 

    05 SET RECOVERY SIMPLE; 

    06 GO 

    07 -- Shrink the truncated log file to 10 MB. 

    08 DBCC SHRINKFILE (MESWIPDB_Log, 10); 

    09 GO 

    10 -- Reset the database recovery model. 

    11 ALTER DATABASE MESWIPDB 

    12 SET RECOVERY FULL; 

    13 GO


     
    我原本想設定他的初始值,但沒辦法更改,明明還沒有開始在使用的資料庫(因為還沒有任何新增資料),

    log檔卻一天一天自己愈來愈大無法還原(每天完整備份)

     

    維護計畫:維護清除工作-重新組織索引工作-重建索引工作-紀錄清除工作-備份交易紀錄-壓縮資料庫-備份完成資料庫

    今天試拿掉<索引>工作,發現log就不會再長大,但也沒辦法壓縮到原始資料庫的log大小,只能壓縮一點點
    • 已編輯 2011年11月2日 上午 09:19
    2011年11月2日 上午 03:55

解答

  • 後來是做交易紀錄備份,一天排程好幾次,他才正常不再莫名成長!!
    • 已標示為解答 2012年1月10日 上午 02:02
    2012年1月10日 上午 02:01

所有回覆

  • 由於您為依照本討論區置頂的「公告」提供相關的資訊,例如:Microsoft SQL Server 版本,所以請您先參考:

    縮小 壓縮 交易記錄檔 (Shrink Transaction Log);以使用 SQL Server 2008/2005 SSMS 管理工具 為例



    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    2011年11月2日 上午 07:28
    版主
  • 我希望的是可以直接在sql server agent的"作業"中,直接設定壓縮log及備份資料庫,並設定排程(每日自動執行)


    不能壓縮的那個資料庫出現以下訊息:

    訊息
    以下列使用者的身分執行: NT AUTHORITY\NETWORK SERVICE。無法壓縮記錄檔 2 (xx_log),因為需要有最小的記錄檔空間。 [SQLSTATE 01000] (訊息 9009)  DBCC 的執行已經完成。如果 DBCC 印出錯誤訊息,請連絡您的系統管理員。 [SQLSTATE 01000] (訊息 2528).  步驟成功。


    • 已編輯 2011年11月2日 上午 09:40
    2011年11月2日 上午 09:22
  • That's not right way to go. You should backup log in scheduled intervals instead of shrinking it, because shrinking log has double performance hit and causes disk fragmentation.

    2011年11月2日 下午 02:18
  • That's not right way to go. You should backup log in scheduled intervals instead of shrinking it, because shrinking log has double performance hit and causes disk fragmentation.


    排程是否有順序上的差異?
    • 已編輯 2011年11月3日 上午 04:33
    2011年11月3日 上午 02:05
  • What kind of order do you reference to? 
    2011年11月3日 下午 01:23
  • 這個是我原本2005時的備份方式:

    維護計畫:(12點)clean log-(1點)維護清除工作-重新組織索引工作-重建索引工作-紀錄清除工作-壓縮資料庫-備份完整資料庫

    可是在2008 r2他會增長log且clean log部份會有兩個資料庫log無法清除縮小,

    因為備份工作完成後其log成長超過原初始值,故初始值也被跟著更改成備份後的log大小,

    我只想知道我的維護計畫是不是有錯,所以才會備份完後log卻無法縮小,後來我就加了一個備份交易紀錄,可是log還是一樣大,改成如下(2008 r2):

    維護計畫:維護清除工作-重新組織索引工作-重建索引工作-紀錄清除工作-備份交易紀錄-壓縮資料庫-備份完整資料庫

    所以想請問一下,備份排程是不是有問題?該如何修改才是?

    又或者我什麼地方設定有誤需要注意的?



    • 已編輯 2011年11月4日 上午 02:56
    2011年11月4日 上午 01:42
  • As I said above, don't shrink log. you should set log backup plan (every 30 minutes for instance) if db is in full recovery mode. If you don't need point of time recovery, set db to simple recovery mode.

    2011年11月4日 上午 02:43
    1. 請您先檢查還原資料庫後,資料庫本身復原模式是否為 "完整"
    2. 若在 "完整" 復原模式下執行您的維護計畫,因為有處理 "重新組織索引"、"重建索引"、"壓縮資料庫",所有的資料庫行為都會被記錄在 LDF 內,大概也是因此才會讓您的資料庫 LDF 暴增
    3. 或許您可以在維護計畫中,維護前插入一個 "執行 T-SQL 陳述式工作",先變更資料庫復原模式為 "簡單",等維護計畫本體執行完畢後,再插入一個同樣的 "執行 T-SQL 陳述式工作",再把資料庫復原模式變更回 "完整"
    4. 另外,您可以考慮直接限制 LDF 的檔案大小上限或乾脆一開始就配好空間大小且不自動成長
    2011年11月4日 上午 06:46
    1. 請您先檢查還原資料庫後,資料庫本身復原模式是否為 "完整"
    2. 若在 "完整" 復原模式下執行您的維護計畫,因為有處理 "重新組織索引"、"重建索引"、"壓縮資料庫",所有的資料庫行為都會被記錄在 LDF 內,大概也是因此才會讓您的資料庫 LDF 暴增
    3. 或許您可以在維護計畫中,維護前插入一個 "執行 T-SQL 陳述式工作",先變更資料庫復原模式為 "簡單",等維護計畫本體執行完畢後,再插入一個同樣的 "執行 T-SQL 陳述式工作",再把資料庫復原模式變更回 "完整"
    4. 另外,您可以考慮直接限制 LDF 的檔案大小上限或乾脆一開始就配好空間大小且不自動成長
    直接設定不自動成長...不是會有問題嗎>"<

    • 已編輯 innova99 2011年11月4日 上午 09:23
    2011年11月4日 上午 07:23
  • Reindex will generate logs even put db in simple recovery mode, and disallowing log auto growth may cause log full error that will stop all activities in the db. You SHOULD backup log in schedule when db is in full recovery mode. Again, don't shrink log file daily. It'll grow again so don't make any sense.
    2011年11月4日 下午 01:37
  • 後來是做交易紀錄備份,一天排程好幾次,他才正常不再莫名成長!!
    • 已標示為解答 2012年1月10日 上午 02:02
    2012年1月10日 上午 02:01