none
簡易模式的log紀錄溢滿 RRS feed

  • 問題

  •  MS SQL Server 2008的復原模式設定成簡易模式,但是Database log紀錄卻會不斷長大,一段時間就滿了,陸續增加到2GB,結果還是滿了。這和舊版SQL Server的表現不一樣。
    2020年5月11日 上午 04:19

所有回覆

  • Use the following instruction:

    DBCC SHRINKFILE (″YourDBName″, ″Desired_size″);

    2020年5月11日 上午 05:51
  • 我的問題主要是在舊版本MS SQL Server上,一旦將資料庫的紀錄設定成簡易模式,規劃200MB的空間,以後紀錄檔一直佔用很少的空間,不用再關心空間夠不夠,而新版雖在簡易模式,可是log檔卻一直長大,甚至超過2GB。
    2020年5月11日 上午 06:10
  • Did you double check db recovery mode? Does db have long running open transaction? You can use following sql statement to check log content to find out why log keeps growing:

    sys.dm_db_log_info (database_id)

    DBCC SQLPERF(logspace)

    2020年5月11日 下午 03:06
  • 簡易模式的 log 會自動清理,但不會自動壓縮,若有空間不會自動成長。

    請先跑壓縮,確認是 log 內資料太多還是檔案太大。

    要一個命令查詢完成後才會自動清理,例如 DELETE FROM DataTable 執行時不會清 log ,如果刪太大的資料會造成 log 自動成長,要等整句執行完成後才會刪交易紀錄檔。

    另外 log 沒限制 2 GB ,你是使用 Express 版嗎?


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2020年5月11日 下午 04:35
  • Thanks a lot for your help.
    2020年5月14日 上午 03:26
  • 這幾天外出,謝謝您的協助!

    log 的確是沒有大小的限制,我原本根據舊版log簡易模式的特性,希望log file不要佔用太大位置,所以規劃200MB有限空間給log,並讓其不要自動成長,儘量將磁碟空間讓給Database,這在SQL Server 2000標準版運行,都沒有問題。

    我現在用的SQL Server分別是2008標準版和2012標準版。

    只是新版卻會一直長大,數年間從200MB不斷手動調整一直到2GB,似乎還不夠,這跟過去SQL Server 2000標準版的特性很不一樣。雖然可以輕易規劃5GB-10GB給log,但是在這種"簡易"模式下,有哪類transaction會記錄到log裡,在每秒有數百筆insertion動作的環境下,到底要規劃多大的空間給log才夠?

    2020年5月14日 上午 04:00
  • Did you check log content? Saw open transactions in the db? Those are first couple of things to check when facing log size issue.
    2020年5月15日 上午 12:40
  • Yes, I have to check the log's contents at first to see what they are, thanks for your comment.

    2020年5月16日 上午 06:58
  • 所有 UPDATE / DELETE 都會先扔交易紀錄檔,等執行完成後才能自動清除。

    所以空間要多大,看你瞬時的需求才知道。

    比較簡單的方法是每天夜裡跑交易紀錄檔壓縮。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2020年5月16日 上午 09:36