截断日志
1.alter database dbname set recovery simple
2.收缩日志文件
脚本:
USE [master]
GO
ALTER DATABASE NS_LCHL SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE NS_LCHL SET RECOVERY SIMPLE --简单模式
GO
USE NS_LCHL
GO
--收缩日志文件的初始大小
DBCC SHRINKFILE (N'TopsERP_BIZ_log' , 11, TRUNCATEONLY)
GO
/*'这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询'
USE NS_LCHL
GO
SELECT file_id, name FROM sys.database_files;
GO*/
USE [master]
GO
ALTER DATABASE NS_LCHL SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE NS_LCHL SET RECOVERY FULL --还原为完全模式
GO
自动清除日志
定期自动清理数据库日志文件
数据库日志文件是随着时间增长而增长的,如果长时间不清理,文件会变得特别大,因此需要定期清空,但是日至文件是恢复数据库的重要依据,不用日志文件也是不明智的。手工清除单个数据库的还好说,但数据库多了,或者临时没有来得及清理,可能硬盘空间就会占满了,影响访问。因此设置自动清理数据库日志文件还是比较实用的。
手动清理方法:右键单击需要清理的数据库,选择“属性”,在“选项”卡上,把故障还原模型设定为简单,确定后关闭;再右键单击该数据库,“所有任务”-“收缩数据库”,确认后即可清除日志文件,最后记得重新选择“属性”,将故障还原模型设置为完全。
自动清理方法:同样是利用sql server代理服务,执行自动作业。
打开企业管理器,进入“管理”-“sql server代理”-“作业”,在右侧窗口点击右键,选择“新建作业”。“常规”选项卡中,填写作业名称,具体描述,注意所有者最好还是用sa或者默认的管理帐号。
转到“步骤”选项卡,新建作业步骤,填写步骤名称,类型为脚本,数据库为需要清理日志的数据库,在下边命令中填写以下命令:
DUMP TRANSACTION 数据库名称 WITH NO_LOG
DBCC SHRINKFILE(数据库日志文件名,1)
上边的数据库名称填写需要维护的数据库名称,数据库日志文件名填写其对应的日志文件名,注意,不是资源管理器里看到的带后缀名的那个名字,而是企业管理器里,数据库属性里日志选项卡中日志的名字(不要带后缀名),确定后添加一个作业步骤。 如果需要维护多个数据库,用上述方法重复添加作业步骤,注意每个步骤成功或失败后的动作即可,最后选择一下开始的步骤。
在“计划”选项卡中,类似备份的维护计划,填写计划周期,即定期清理的周期,不再细述。如果需要,可以在最后的“通知”选项卡上设置作业完成后的通知项,需要设置操作员,以及设置相应的服务,这里也不具体说明了,通常不用……
原来都是手动执行上边的各项操作的,比较麻烦,在网上找找加上自己实践,总结出上边的经验,实施一段日子以来,确实比以前省心多了。存档一个。