以下是引用 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.
“如此庞大的文件给数据的备份带来的一定的难度”,不知你说的“备份”具体是个什么操作。
一般来说,备份SQL数据库有两种方法:
1) 将SQL Server彻底停掉,然后拷贝相关数据库文件;
2) 利用SQL Server的管理工具进行备份。
第一种方式的缺点是明显的,就是必须要停止所有业务,如果要在服务器运行的情况下进行备份,那就不能使用这种方法。
第二种方式是推荐的方式,不但可以在系统运行的情况下进行备份,而且备份操作本身会在数据库的日志系统中形成checkpoint,系统知道已经进行了这次备份,所以就允许在备份完成后,将checkpoint以前的全部日志空间释放,虽然不一定可以表面上缩小日志文件的大小,但是可以让这部分空间被后来使用,日志文件尺寸不会继续扩大。
你所说的“通过SQL Server Management Studio工具直接收缩数据库与收缩文件两种方式并没有成功达到清理日志文件的目的”,估计是你没有用SQL Server的备份工具来备份,所以当然无法收缩文件了,如果此时能收缩文件,数据库的安全性就受到了损害 --- 因为日志被清除了,将来利用日志恢复的机会的丢失了。我日前曾经托江经理转告与你,说full模式下必须要用SQL Server的备份工具进行了备份后,才能具备把checkpoint前面时间的日志清除的条件。
你说通过修改recover模式来达到压缩文件的目的,这个动作本身无害,如果你用某种方式进行过大备份的前提下。SQL Server的规则是,simple模式可以自动重复使用日志文件空间,意思也就是根本不记载历史日志。而full模式要记载历史日志,所以日志文件才会越来越大。
从安全性的角度,full recover模式提供了额外的安全性,所以将数据库创建为或者修改为simple模式是不可取的。日志文件变大的问题,只需要定期进行备份就可以了。SQL Server的规则很严,哪怕是你刚备份完就把备份文件删除,也要有这个动作,我刚才说了,这个动作是给SQL Server一个明确的checkpoint信号,这是步骤必须的。我也还没有来得及看SQL Server命令手册,是否也有一种可能性,用backup命令的某个选项,可以做到产生checkpoint但是不创建备份文件 --- 这也是“备份”动作呀!
~~~
“另外通过修改sql配置,让sql自动清理日志,目前还在测试中,不知效果如何。方法:选择要设置的数据库右键--属性--选项--自动收缩设置为True.” ,我是这么看的,在full recover模式下,如果不对数据库进行备份,那么没有checkpoint,自动收缩的条件达不到。估计这个自动收缩的属性是在具备一定条件下才能起作用的。还是一句话:备份操作不能免除。
我觉得SQL Server这样设计非常好。系统管理员不去备份数据库,数据库的日志文件就会越来越大,直到把空间撑满报错。系统管理员只好去做备份。被强迫做备份 --- 这难道不好么?否则,难道没有备份,数据库被意外损坏了才好?
至于备份出来的备份文件占据空间的问题,据我所知SQL Server的备份工具提供了增量备份的可能,也就是说从某个时间点到另外一个时间点的修改部分的部分,我们知道,每一天对数据库的修改量毕竟是有限的。升级以后做的大面积重建检索点的操作导致日志文件迅速扩大,这是偶然情况。
增量备份也显然得益于full模式下的历史日志机制。增量备份说白了备份的就是日志文件中增加的部分。
当然,每当彻底大备份一次后,前面的增量备份文件就可以删除了。所以空间也是可以控制的。另外需要强调的是,每一次最好把备份文件另外保存到可靠介质上例如刻录到光盘上。这样硬盘空间就不会无休止占有。那种放在硬盘上的所谓“备份文件”是很危险的,一旦硬盘损坏,后果不堪设想,以前我们是看到过这样的活生生的案例的。
~~~
dp2kernel和dp2library包揽了大部分关于SQL Server底层的管理性操作,所以我们系统的用户有个特点,就是对于SQL Server本身并不精通,这在免维护的角度来说是个优点,但是缺点就是用户对SQL Server缺乏基本的动力去学习一些管理操作。公司技术人员和开发人员也无形中有类似倾向。
现在面临的这个SQL Server固有的备份问题,我建议还是从书店买两本正规的出版物看看,或者研究一下SQL Server的官方文档,最低限度,要学会如何进行日常的备份操作。注意,我说的是利用SQL Server自带的备份工具进行的标准操作。
如果可能,将来dp2kernel也可以提供备份的功能界面,调用SQL Server的相关功能帮助用户进行备份。
我后面会给出一些我查阅的文档,给大家提供参考。