首页 新闻 会员 周边

SQL Server 2005数据库修复后无法收缩

0
悬赏园豆:100 [已解决问题] 解决于 2008-11-14 16:41

情况是这样的:这个数据库先前没有启用完整日志,用的是简单日志。至于为什么这样用,原因很多,就不再追究了。

后来有段时间服务器有些问题,连续的几次非法重启以后,数据库挂了,被标志为可疑。于是采用了dbcc checkdb进行修复。然后又对几个表也进行了单独修复。

然后数据库可以用了,于是为了防止此类事件再次发生,把日志改为完整。

结果,日志膨胀到60G以后,无法收缩。不管是把日志改为简单,还是使用截断日志的方式,日志的可用空间始终为0(或者是一个很小的数值),日志一直膨胀下去,直到有一次把硬盘空间占满。

这个问题怎么解决?

问题补充: 认为我连BACKUP LOG 数据库 WITH NO_LOG; 这个都没试过的朋友就不用费神了。要是这么容易解决也不会到这里来提问了,Google一下一大把。备份就更不用说了,难道日志涨到60G我都不备份数据库?比较靠谱的是重建日志。很可惜,这招不管用。原来的日志把硬盘占满以后,我就分离了数据库,删了日志文件,再附加,自动新建了个日志文件。现在这个日志已经7G了,截断后仍然无法收缩,显示没有可用空间。 用了DBCC UPDATEUSAGE以后的确修复了一些东西,再截断日志,还是显示日志空间全部被使用,无法收缩。 新发现:执行了一下DBCC OPENTRAN(dbname),输出了这样的东西。对其它数据库执行的时候没有这个已复制的事务信息。怎么整? 已复制的事务信息: 最早的分布式 LSN : (0:0:0) 最早的非分布式 LSN : (1051867:2025:1) DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
Jason Cui的主页 Jason Cui | 初学一级 | 园豆:105
提问于:2008-11-14 11:34
< >
分享
最佳答案
0

你的问题很可能是由于你之前数据库出问题造成的,某些系统表的记录被破坏了。

你可以尝试使用 DBCC UPDATEUSAGE 来重新恢复。

下面链接是一个国外的 DBA 遇到和你类似的问题的解决办法,你可以参考一下。

http://dailytechlog.datastruc.net/software/database/ms-sql-server/database-has-0-space-available-sql-server-2000.html

或者在google上搜如下关键字

sql server space available zero

看看有没有你想要的答案

eaglet | 专家六级 |园豆:17139 | 2008-11-14 14:09
其他回答(2)
0

BACKUP   LOG    数据库 WITH   NO_LOG;  

重典 | 园豆:2442 (老鸟四级) | 2008-11-14 11:46
0

备份后日志可以自动截断的,你试着备份一下呢?

或者再添加一个日志文件,然后把原来这个删除了

丁学 | 园豆:18730 (专家六级) | 2008-11-14 12:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册