truncate log on checkpoint

关于 SQL SERVER 的log file
 
sql server 的log 是不会自动清除或者 rewrite的。除非人工清除。
 
在清除 log 内容的方法中,最容易的就是 truncate.  或者用 job 定期 backup log 之后自动清除。而 backup 的 log,可以使 database 在recovery 时, to the point you like.
 
如果不需要那些 log 文件的 backup,选 truncate log at checkpoint 就永远不用为log 担心了。
 
SQL SERVER 的 checkpoint 好像很难人为控制,应是系统自己控制的。当设置了 truncate log at checkpoint 时,系统即为在内容超过 log size 70% 的时候自动产生 checkpoint 清除 log 内容。
 
在 developing 的环境中,不需要 recovery database to the point of failure。因此不需要存档 archived log files.  多数就设置了 truncate log at checkpoint.

  有些用户贪图简便,在生产环境中设置了 truncate log on checkpoint 。其原意不外是避免因写满日志而导致的业务停顿。殊不知,这样的设置可能带来不可挽回的灾难。因为当事务被截断后,从最近一次全备到当前的事务均不可能再 恢复了!如果这期间出现问题,如磁盘损坏,则将导致大量数据丢失。
 
  在生产环境中,应通过配置合理的备份策略来进行全备和增量备份。典型的策略是每周一次全备,每天一次增量备份。用户应根据自身应用的实际情况(数据 量、数据增量、数据重要性等因素),合理调整,如改为一天两次增量备份。如果需要大量导入数据,可能写满日志,那么可能临时设置 truncate log on checkpoint,但需要注意的是:完成数据导入后,应立即取消此设置,并马上进行全备。


USE   [database-name] 
  EXEC   sp_dboption   'database-name',   'trunc.   log   on   chkpt.',   'FALSE'

posted on 2008-05-03 22:33  afant  阅读(2074)  评论(0编辑  收藏  举报

导航