如何使MSSQL的日志文件不再增大?

如何使MSSQL的日志文件不再增大?
先介绍一个简单的方法,就是把数据库的故障还原模型设置为“简单”(SQL2K),这样它就会在Checkpoint的时候截断日志,具体操作方法是:
  
  1、在Enterprise Manager中右键点数据库,“属性|选项|故障还原”,选择“简单”就可以了,如果是SQL7,在“属性|选项”中有一个“trunc. log on chkpt.”,选中就可以了。
  
  2、如果不想用Enterprise Manager,在Query Analyser或者isql里面执行“EXEC sp_dboption 'your_dbname', 'trunc. log on chkpt.', 'TRUE'”就可以了。
  
  但是,要注意的是,这样做了之后,虽然日志不会增大,但是也意味着你一旦出现误操作,将不会有利用日志恢复的机会。
  
  所以,绝对不建议在生产数据库上截断日志,除非你有充足的理由和足够的把握,或者承担责任的不是你。
  
  既然以上方法不安全,下面将介绍一种安全的方法:
    
  大家都知道,SQL Server在完成事务日志备份时将自动截断事务日志中的不活动部分,这些不活动的部分包含已完成的事务,因此在恢复过程中不再使用。相反,事务日志的活动部分包含仍在运行但尚未完成的事务,SQL Server将重新使用事务日志中这些截断的非活动空间,而不是任由事务日志继续增大并占用更多的空间。 
  
  所以,我们备份事务日志就可以使日志文件不再增大了。
  
  但是呢,日志文件一直放着也不是个办法,删除呢,又会失去恢复的可能性。
  
  我们可以结合完全备份来做。做过完全备份之前的事务日志就可以删除了。
  
  比如说,一个备份计划,每天一次完全备份,保留7天内的,每15分钟一次事务日志备份,保留2天的。
  
  用数据库维护计划向导可以很方便的建立备份计划,不过一定要记得设置保留多久的备份,否则硬盘空间被备份给占满了就坏事了。
怎样快速缩小数据库日志文件   
假设要缩小日志文件的数据库名为fxsoft,首先在查询分析器中执行以下命令:
  
  SP_Detach_DB 'fxsoft'
  
  然后直接把日志文件fxsoft_log.LDF删除,最后在查询分析器中执行以下命令:
  
  SP_Attach_DB @DBName='fxsoft',@filename1='c:\mssql7\data\fxsoft.MDF'
  
  注意:执行以上命令时,必须断开所有与fxsoft的数据库连接,在查询分析器中可以选择master执行以上命令。
Bonny.Wong 2005/5/16 于 博客园

你可能感兴趣的:(MSSQL)