在我的团队 ASP.NET 应用程序的数据访问层中,我通过使用 .NET SQLClient 对我们的数据库运行存储过程。添加新代码以允许对数据库进行插入操作后,我测试了代码,并收到以下异常:
The transaction log for database 'DBName' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
我确认在 MS SQL Server Management Studio 中尝试插入操作时收到了相同的消息。我很担心,因为我最近添加了三个两个触发器两个数据库来执行基于插入和更新某些表的一些数据插入,并且我认为可能我已经招致了一个无限循环或类似性质的东西。
但是,根据在线此问题的其他实例,这似乎不是通常由触发器或旋转查询引起的问题。我查询了log_reuse_wait
andlog_reuse_wait_desc
列并返回了以下内容:
2 | LOG_BACKUP
此外,查询返回:SELECT [name], recovery_model_desc, log_reuse_wait_desc
FROM sys.databases
name | recovery_model_desc| log_reuse_wait_desc
DBName| FULL | LOG_BACKUP
其中第一列是log_reuse_wait
,第二列是log_reuse_wait_desc
。根据msdn上代码的定义,我需要执行日志备份,然后可以自动截断日志,以便对数据库进行进一步的操作。这是一个正确的假设吗?这可能是由错误编码的触发器引起的,还是更多的日常维护任务,由数据库上的大量事务引起?
编辑:
查询select type_desc, size, max_size from sys.database_files
返回:
type_desc | size | max_size
1| ROWS | 512 | -1
2| LOG | 64 | -1