今天一早,一到公司,被同事告知内部的一个数据库系统发生了问题,更新数据的时候提示失败。

于是开始着手处理,先是找到发生错误的地方,使用输出语句输出了错误Err.number,错误代码为-2147217900,然后又输出了发生错误的SQL语句,复制到查询分析器中执行,被告知错误为:数据库 ‘XXX’ 的日志已满。请备份该数据库的事务日志以释放一些日志空间。

原来是事务日志已满。

解决办法:

在SQL查询分析器中,分别运行以下两句(XXX为数据库名)。

backup log XXX with no_log 截断事务日志

DBCC SHRINKDATABASE(XXX) 收缩数据库(如果数据库较大,该语句需要运行一段时间,1.8G的库运行了35秒)

执行完毕即可。

一般来说:在数据库中插入大量数据或者更改字段属性时,也有可能提示这种错误。

Err.number -2147217900

数据库 ‘XXX’ 的日志已满。请备份该数据库的事务日志以释放一些日志空间。

这时只要在查询分析器中运行:

–截断事务日志

backup log 数据库名 with no_log

–收缩数据库

dbcc shrinkdatabase (数据库名)

就可以解决问题。

如果还不可以,尝试用下面的方法解决:

将数据库的故障恢复模型设为“简单”,并选上“自动收缩”,默认是“完全”。

再不可,继续尝试:

将事务日志设置为:文件增长不受限制,操作完再改回来。