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管理工具中修改数据库的恢复模式。在对象浏览器中,右键单击你的数据库(在数据库节点下),然后点击属性。在数据库属性对话框中,点击选项标签页,然后修改恢复模式如下:
右键单击该数据库,“所有任务”-“收缩”-“数据库”,确认后即可清除日志文件
最后记得重新选择“属性”,将故障还原模型设置为完全。
3.自动定时清理
打开企业管理器,进入“管理”-“sql server代理服务”-“作业”,在右侧窗口点击右键,选择“新建作业”。
“常规”选项卡中,填写作业名称,具体描述,注意所有者最好还是用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
“调度”选项卡中,类似备份的维护计划,填写调度周期,即定期清理的周期,不再细述。如果需要,可以在最后的“通知”选项卡上设置作业完成后的通知项,需要设置操作员,以及设置相应的服务,这里也不具体说明了,通常不用……
版权声明:本文内容来源于网络搜集无法获知原创作者,仅供个人学习用途,若侵犯到您的权益请联系我们及时删除。邮箱:1370723259@qq.com