删除或缩小数据库的日志文件

  今天登录实验室的机器,发现硬盘空间不足。原来是有两个数据库的日志文件非常大,一个60多G,一个80多G,而这两个数据库本身只有20G左右。现在数据库使用正常,所以要把日志文件变小腾出硬盘空间。


  方法一:通过查询分析器提供的Shrink功能

  右击需要操作的数据库,选择 All Tasks -> Shrink -> File,在打开的对话框中的File type选择LOG,然后再设置要收缩到的大小,比如10240MB。如图:

  但如果日志把已分配空间几乎占满了的话,这种方法基本释放不了多少空间,这就要采用方法二。


  方法二:使用SHRINK命令。

USE [master]
    GO
    ALTER DATABASE TableManager SET RECOVERY SIMPLE WITH NO_WAIT
    GO
    ALTER DATABASE TableManager SET RECOVERY SIMPLE   --Simple mode
    GO
    USE TableManager 
    GO
    DBCC SHRINKFILE (N'TableManager_log' , 11, TRUNCATEONLY)  --"11" is the expected file size
    GO
    USE [master]
    GO
    
    ALTER DATABASE TableManager SET RECOVERY FULL WITH NO_WAIT
    
    GO
    
    ALTER DATABASE TableManager SET RECOVERY FULL  --Recovery mode
    
    GO

  如果把还原模型调到简单,这样就不支持时间点还原了,但是日志文件会很小,如果数据比较重要推荐还是把数据库的还原模型调为完全。不过此动作最好不要经常使用,因为它的运行会带来系统碎片。普通状态下LOG和DIFF的备份即可截断日志。此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。

  为了限制日志文件的增长大小,需要打开数据库的属性窗口,将日志文件限制增长。

参考资料:http://bbs.csdn.net/topics/330193444 

✏️ 有任何想法?欢迎发邮件告诉老夫:daozhihun@outlook.com