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 支持人员已修复该驱动器,现在一切正常!