none
SQL 2005 DB的完整備份檔案遠大於DB本身的檔案 RRS feed

  • 問題

  • 公司有一台Team Foundation Server,使用SQL 2005,每周完整備份一次。

    其中[TfsVersionControl]這個DB的mdf大小才3G,完整備份的檔案卻高達90G。

    備份使用的指令如下:(使用指令碼產生的預設設定)

    BACKUP DATABASE [TfsVersionControl] TO  DISK = N'C:\TFSBackUp\TfsVersionControl\TfsVersionControl_Full.bak' WITH NOFORMAT, NOINIT,  NAME = N'TfsVersionControl-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
    GO
    想請教各位先進前輩,是不是語法需要調整?

    • 已編輯 johappy 2014年3月19日 上午 03:19
    2014年3月19日 上午 03:01

解答

  • Because you backup db with noinit option, that means keep adding backup to same file. That's why backup file is so big, you can confirm with following:

    restore headeronly from disk = 'c:\tfsbackup\tfsversioncontrol\tfsversioncontrol_full.bak'

    • 已標示為解答 johappy 2014年3月19日 上午 06:23
    2014年3月19日 上午 03:22
  • NOINIT选项是增加备份文件到介质,不会覆盖(如果覆盖用INIT )所以你这个备份包含了很多次的备份。建议你用维护计划或者自己写代码来控制备份文件的名称比如增加日期等等,这样可以方便管理。对于超过一定期限不需要的备份可以定期的清除。


    Please Mark As Answer if it is helpful.

    • 已標示為解答 johappy 2014年3月19日 上午 06:23
    2014年3月19日 上午 03:44

所有回覆

  • Because you backup db with noinit option, that means keep adding backup to same file. That's why backup file is so big, you can confirm with following:

    restore headeronly from disk = 'c:\tfsbackup\tfsversioncontrol\tfsversioncontrol_full.bak'

    • 已標示為解答 johappy 2014年3月19日 上午 06:23
    2014年3月19日 上午 03:22
  • NOINIT选项是增加备份文件到介质,不会覆盖(如果覆盖用INIT )所以你这个备份包含了很多次的备份。建议你用维护计划或者自己写代码来控制备份文件的名称比如增加日期等等,这样可以方便管理。对于超过一定期限不需要的备份可以定期的清除。


    Please Mark As Answer if it is helpful.

    • 已標示為解答 johappy 2014年3月19日 上午 06:23
    2014年3月19日 上午 03:44
  • 感謝二位前輩的解答,將NOINIT改成INIT之後,備份檔縮小到跟mdf差不多大了。
    2014年3月19日 上午 06:27
  • 因為備份內含有交易紀錄檔,可以先截斷交易紀錄檔再備份...


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

    2014年3月19日 下午 01:09
  • You are better to backup log instead.
    2014年3月19日 下午 03:45