情况是这样的:这个数据库先前没有启用完整日志,用的是简单日志。至于为什么这样用,原因很多,就不再追究了。
后来有段时间服务器有些问题,连续的几次非法重启以后,数据库挂了,被标志为可疑。于是采用了dbcc checkdb进行修复。然后又对几个表也进行了单独修复。
然后数据库可以用了,于是为了防止此类事件再次发生,把日志改为完整。
结果,日志膨胀到60G以后,无法收缩。不管是把日志改为简单,还是使用截断日志的方式,日志的可用空间始终为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
看看有没有你想要的答案
BACKUP LOG 数据库 WITH NO_LOG;
备份后日志可以自动截断的,你试着备份一下呢?
或者再添加一个日志文件,然后把原来这个删除了