如何缩小MSSQL的日志文件已经是一个经常性的问题了不过这个问题在精华区已经有不少答案了我这里也不再赘述
现在我们讨论一下治本的问题即如何使日志文件不再增大?
先介绍一个简单的方法
就是把数据库的故障还原模型设置为简单(SQLK)这样它就会在Checkpoint的时候截断日志
具体操作方法是
在Enterprise Manager中右键点数据库属性|选项|故障还原选择简单就可以了如果是SQL在属性|选项中有一个trunc log on chkpt 选中就可以了
如果不想用Enterprise Manager在Query Analyser或者isql里面执行EXEC sp_dboption your_dbname trunc log on chkpt TRUE就可以了
但是要注意的是这样做了之后虽然日志不会增大但是也意味着你一旦出现误操作将不会有利用日志恢复的机会(如何利用日志来恢复请参见精华区的FAQ)所以绝对不建议在生产数据库上截断日志除非你有充足的理由和足够的把握或者……承担责任的不是你
既然这种方法不安全下面我将介绍一种安全的方法
大家都知道SQL Server 在完成事务日志备份时将自动截断事务日志中的不活动部分这些不活动的部分包含已完成的事务因此在恢复过程中不再使用相反事务日志的活动部分包含仍在运行但尚未完成的事务SQL Server 将重新使用事务日志中这些截断的非活动空间而不是任由事务日志继续增大并占用更多的空间
所以我们备份事务日志就可以使日志文件不再增大了但是呢日志文件一直放着也不是个办法删除呢又会失去恢复的可能性我们可以结合完全备份来做做过完全备份之前的事务日志就可以删除了比如说一个备份计划每天一次完全备份保留天内的每分钟一次事务日志备份保留天的用数据库维护计划向导可以很方便的建立备份计划不过一定要记得设置保留多久的备份哦否则硬盘空间被备份给占满了就坏事了