SQL Server 2008 定时删除日志文件

Rockwell的SE软件在使用SQL Server作为历史数据存储时,其数据库日志文件的生成速度是非常迅速的,在某客户处数据只存储了50G,日志文件就存储了170G+。硬盘被日志文件填满,我们需要的数据就无法再继续存储了。那么如何删除日志文件呢?

1.手动清理-T-SQL方式

说明:DB_DataLog 是数据库的名字,DB_DataLog_log是查询到的日志文件的名字。

首先,需要知道日志文件的名字。通常是数据库的名字+”_log”后缀,当然有时候也不一定。通过以下代码可以查询。

use DB_DataLog
go
select FILE_ID ,NAME from sys.database_files ;
go

其次,将数据库的故障还原模型设定为简单

use master
go
alter database DB_DataLog set recovery simple with no_wait
go
alter database DB_DataLog set recovery simple
go

然后,执行日志收缩指令

use DB_DataLog
go
dbcc shrinkfile(N’DB_DataLog_log’,11,truncateonly)
go

最后,将数据库的故障还原模型设定为完全

use master
go
alter database DB_DataLog set recovery full with no_wait
go
alter database DB_DataLog set recovery full
go

2.手动清理-SQL Server管理工具(SSMS)

你可以在SQL Server管理工具中修改数据库的恢复模式。在对象浏览器中,右键单击你的数据库(在数据库节点下),然后点击属性。在数据库属性对话框中,点击选项标签页,然后修改恢复模式如下:

image

右键单击该数据库,“所有任务”-“收缩”-“数据库”,确认后即可清除日志文件

image

最后记得重新选择“属性”,将故障还原模型设置为完全。

3.自动定时清理

打开企业管理器,进入“管理”-“sql server代理服务”-“作业”,在右侧窗口点击右键,选择“新建作业”。

image

“常规”选项卡中,填写作业名称,具体描述,注意所有者最好还是用sa或者默认的管理帐号。

“步骤”选项卡,新建作业步骤,填写步骤名称,类型为脚本,数据库为需要清理日志的数据库,在下边命令中填写以下命令

Step1:作用数据库 master

alter database DB_DataLog set recovery simple with no_wait;
alter database DB_DataLog set recovery simple

Step2:作用数据库 DB_DataLog

dbcc shrinkfile(N’DB_DataLog_log’,11,truncateonly)

Step3:作用数据库 master

alter database DB_DataLog set recovery full with no_wait;
alter database DB_DataLog set recovery full

“调度”选项卡中,类似备份的维护计划,填写调度周期,即定期清理的周期,不再细述。如果需要,可以在最后的“通知”选项卡上设置作业完成后的通知项,需要设置操作员,以及设置相应的服务,这里也不具体说明了,通常不用……

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据