SQL Server 声称事务日志已满,但事实并非如此?

SQL Server 声称事务日志已满,但事实并非如此?

INSERT我正在尝试从一个数据库向另一个数据库执行大型操作。但我收到一条错误消息:

消息 9002,级别 17,状态 4,第 1 行 数据库“_ARCHIVE_mydatabase”的事务日志已满。要找出日志中的空间无法重用的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列

我迄今所做的事情:

  • 检查磁盘是否有足够的磁盘空间
  • 检查事务日志文件大小是否较小(1024 KB)
  • 检查 log_reuse_wait_desc 是否为空
  • 检查 _ARCHIVE_mydatabase 的恢复模式是否为简单的
  • 重启服务器

我也尝试从这个 SF 答案运行查询:( 事务日志已满),但这没有帮助。

而且我们有许多_ARCHIVE数据库,它们都有同样的错误!

我还能尝试什么以及为什么会发生这种情况?

答案1

不是问显而易见的问题,而是你检查过确保没有设置日志文件大小限制吗?或者自动增长选项未被禁用。

答案2

事务日志文件不应该太小。它是“暂存空间“对于 SQL 事务来说,这是 SQL Server 正常运行所必需的。请将其设置为合理的值(例如 512MB 或 1GB),然后重试该操作。

另外,请不要在“简单”恢复模式下运行生产数据库。完整的事务日志记录有助于 SQL Server 在发生意外事件时保持内部事务一致性。您应该观察日志文件的增长情况,手动将其增长到合理的大小,然后定期备份事务日志(我的设置为每小时一次)。

答案3

问题是我们的虚拟服务器的硬盘已损坏。当我尝试运行 chkdsk 时,我收到一条错误“文件系统类型为 RAW”(这意味着未格式化)。我们的 IT 支持人员已修复该驱动器,现在一切正常!

相关内容