系统运行过程中,突然报错数据库tempdb的事物日志已满,原因为“ACTIVE_TRANSACTION”。导致所有业务崩溃。
接到报警后,进入数据库服务器。检查硬盘空间正常,于是登录数据库,一登录就报错。且除系统数据库之外都无法显示。
- 首先尝试了收缩数据,但前台操作一直不成功
- 然后找了一个增加数据库日志文件的命令,在测试库测试添加成功
先查询数据库日志的存放位置,再讲tempdb的位置代入到FILENAME的位置中。第一次执行未成功,第二次执行成功。
执行成功后系统即恢复正常。
1 select * from sys.sysdatabases where name=‘tempdb‘
2 alter database tempdb add file (NAME=N‘temp1_log‘,FILENAME=N‘D:\MSSQL12.MSSQLSERVER\MSSQL\DATA\temp1_log.ndf‘,SIZE=8192KB,FILEGROWTH=65536KB) TO FILEGROUP [PRIMARY]
总结:数据库日志因设置了大小限制,导致日志达到限制最大值时就会死掉。 数据库日志大小限制这个功能就是个坑!!!千万别设置