今天有个朋友说他的数据库报错,错误信息如下:
Msg 9002, Level 17, State 2, Line 4
The transaction log for database '' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
这个错误是很常见的,日志文件满了,但是导致日志满的原因会有很多,怎么查呢?其实这个错误已经给了我们很大的提示,查询sys.databases中的log_reuse_wait_desc列.查询sys.databases:
SELECT log_reuse_wait_descFROMsys.databasesWHERE[name]='database';
得到的值为:LOG_BACKUP,说明需要运行日志备份解决这个问题。所以对数据库进行一个日志备份:
BACKUPLOG DatabaseAtoDISK='D:\MSSQL\databaseAckup.trn';
备份完成后问题解决,之后再查log_reuse_wait_desc得到值为:NOTHING(当前有一个或多个可重复使用的虚拟日志文件。