以下是引用 pengxiang 于 2012-5-15 9:40:55 发表的文字:
2012年5月10日将dp2 V2升级为2012.5.3版本(安装目录dll文件日期),在重建检索点过程中sql库对应的日志文件增长迅速,以我馆的情况中文图书库数据库文件3.2G,日志文件达到9.1G,编目库库文件2.2G,日志文件达9.1G,两个库的日志文件大小完全一致(不知是偶然还是有什么内在原因)。
如此庞大的文件给数据的备份带来的一定的难度,通过SQL Server Management Studio工具直接收缩数据库与收缩文件两种方式并没有成功达到清理日志文件的目的,文件大小基本没有变化,目前我的方法是1、选中要清除日志的数据库——右键——属性。 2、在选项页选中“选项”,恢复模式选择“简单”,点击最下边确定按钮。 3、再选中数据库右键——任务——收缩——数据库。 4、点击“确定”按钮。 搞定,日志文件已变小。 5、最后一件事就是把恢复模式再改成原来设置即可。
但是不知道此方法是否存在风险,供大家参考交流。
另外通过修改sql配置,让sql自动清理日志,目前还在测试中,不知效果如何。方法:选择要设置的数据库右键--属性--选项--自动收缩设置为True.
经过几天的学习和测试,在收缩事务日志前必须进行事务日志截断,而触发日志截断的操作有:
1)在完整或大容量日志恢复模式下,进行数据库和日志文件的备份时会日志会自动截断;
2)在查询编辑器中用backup log dbname with no_log命令进行手工截断日志;
3)在数据库--属性--选项中将恢复模式切换到简单模式;
可以看出彭老师的方法也是一种较为简单的方法,下面我将提出另外的两种方法以供参考:
1)在完整或大容量日志恢复模式下备份数据库和日志后,再进行收缩事务日志;
选中要收缩事务日志的数据库,右击上下文菜单任务--备份,进入到备份数据库的窗口,观察该窗口发现,恢复模式为"FULL",备份类型为完整,设置好备份集过期时间和要存放备份文件的物理位置后,点击确定按钮,进行备份数据库操作。
数据库备份完成后,继续选中该数据库,右击上下文菜单任务--备份,进入到备份数据库的窗口,恢复模式仍为"FULL",备份类型为事务日志,设置好备份急过期时间和要存放备份的日志文件的物理位置后,点击确定按钮,进行备份事务日志操作。
事务日志备份完成后,继续选中该数据库,右击上下文菜单的收缩--日志,进入到收缩文件窗口,在该窗口中将文件类型修改为日志,并且在这个窗口中可以看出分配的空间和可用的空间。点击确定按钮,进行收缩事务日志。收缩完成后观察该数据库事务日志文件的物理空间已经被扩大。
2)在查询编辑器中用命令来收缩事务日志
选中要收缩事务日志的数据库,右击上下文菜单的新建查询,进入到查询编辑器,例如:
在第一行中输入:
backup log dp2kernel_dprms_14_db with no_log //手动截断日志
第二行输入:
dbcc shrinkfile('dp2kernel_dprms_14_db_log') //收缩事务日志
然后执行就可以了。
总结之后,可以看出共有三种方法可以进行收缩事务日志,第一种是在完整或大容量日志恢复模式下对数据库和日志进行备份后再收缩事务日志。第二种是在查询编辑器中用命令进行收缩事务日志,第三种是将数据库恢复模式切换到简单模式下,然后再通过收缩数据库来收缩日志文件。
相比而言,第一种方法是比较"正规"的操作方法,也是建议用户在日志物理空间比较大时所使用的收缩事务日志的方法,因为在收缩日志前对数据库进行了"Full"模式备份。第二种方法是用命令的方法进行收缩事务日志,首先通过backup log dp2kernel_dprms_14_db with no_log进行手工截断日志,然后在手缩日志文件,我们建议您不要使用no_log手动截断事务日志,因为这会破坏日志链。直到下一次的全备份或差异数据库备份,数据库不受介质故障。手动截断日志只在非常特殊的情况,并立即创建数据备份。 第三种方法是一种比较简单的方法。