SQLServer事务日志的压缩与删除方法
做项目的时候拿到一个只有280M的数据库备份,可是在SQLServer 2000下恢复的时候等了半天才都没 有恢复完毕,感觉很不可思议,于是怀疑有什么猫腻。到了数据文件的目录下一看,果不其然竟然声称了 一个接近10G的数据库日志文件!以前从来没有做过那么多数据的数据库,而且更没有做过有3年数据库日 志记录的数据库。
这对于硬盘空间不是很充裕的我来说已经超过了能够忍受的极限,而且另一个80M的 数据库回复之后生成的日志文件更是夸张的达到了5G+!这是不能忍受的,也是不能被原谅的。 刚开始 的时候不太懂,直接把数据库日志删除了,发现这样数据库就不能用了,于是百度了一下,发现网上很多 提到了日志的压缩和删除技术,正是我想要掌握的内容。仔细整理了一下,大致有这么几种方法解决。 方法一: 第一步:
-- no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。 第二步: 1.收缩特定数据库的所有数据和日志文件,执行:
-- database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩 余可用空间百分比。 2.收缩一次一个特定数据库中的数据或日志文件,执行
-- file_id是要收缩的文件的标识 (ID) 号,若要获得文件 ID,请使用 FILE_ID 函数或在当前数据库 中搜索 sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc shrinkfile 将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具 体意思查看联机帮助. (编辑:滁州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |