今天登录实验室的机器,发现硬盘空间不足。原来是有两个数据库的日志文件非常大,一个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时间太长可能影响生产的情况下使用。
为了限制日志文件的增长大小,需要打开数据库的属性窗口,将日志文件限制增长。