sql server mdf 文件突然变的超大, 无法缩小。(已解决,2013.02.19)

来源:互联网 发布:java 购票系统demo 编辑:程序博客网 时间:2024/05/21 17:31

今天, 一个客户的sql server反应说数据文件变的超大, 短短半个月的时间, 从1G增长到69G。 十分不正常。

在数据库属性里面看到数据库的大小的初始值: 变成69G。 

做了如下尝试:

1、利用sqlserver 本身工具, 进行数据文件收缩, 从69G缩小到6G, 直接报错。 从69G缩小到30G, 不报错, 但是刷新以后, 仍然显示69G, 明显是没有起作用。

2、利用数据库里面的备份工具, 直接无法备份。报错。 

3、建立一个新的数据库, 使用dts想把数据从这里导入到新库, 错误不断。2500张表, 无法进行。

4、检查所有表记录数, 无明显异常。

郁闷3个小时。 重试n遍。 都没有办法。

最后使用backup database 命令直接备份, 竟然成功备份出一个文件。 然后恢复到其他机器, 文件体积 900M左右, 恢复正常。 粗略检查, 里面数据都在。

此次经历十分惊险, 2012年底, 一个客户那里出现类似情况, 数据库体积变成30G。 开始没有任何问题, 但是后来问题越来越多,有些表在查询分析器中

也无法打开, 之后被意外恢复。 然后造成数据丢失。

总结:

两次事故原因不详。 现象有些类似, 数据库的体积都是非正常膨胀。sqlserver gui工具失灵。无法备份。

特意记录下来作为一个参考。


【后记: 今天下午竟然发现数据库的体积莫名其妙恢复正常了, 唯一做的事情就是删除了备份计划。】


【后记2013.02.19: 今天找到事情起因 , 因为过了一天, 数据库体积再次膨胀到50G, 所以怀疑有人在数据库里面做手脚, 于是想看一下物理表,

   的记录数据, 是什么占用这么大体积, 检索所有表的记录数, 没有发现过大的记录, 最多一个表16W记录, 打算放弃, 无意发现, 很多表的记录数,

  都一样多, 仔细查看, 一张表1.6w记录, 导出后体积10M左右, 这样的表竟然有4000张, 程序处理出现问题, 把一张表复制了这么多遍, 难怪!

  至此, 问题原因找到。 总算可以松口气! 没有被黑客黑、 系统本身米有问题。】