为什么在备份期间不能收缩事务日志?

Jam*_*mes 6 sql-server-2008 sql-server

我有一个简单恢复模式的大型数据库(供应商要求),花了 3 天时间将其备份到新托管公司的服务器。

第三天早上,由于事务日志已填满其驱动器,DB 下线。

我的理解是 SQL Server 将开始回收空间。更有趣的是,在我给它更多空间之前,我认为数据库不会再次开始工作——它在备份完成后仍然被破坏。不过,我没有花时间进行正确的调试,所以我不知道为什么会卡住。

问题:为什么 SQL Server 在 Simple Recovery 中不能在备份时回收其事务日志?

Jon*_*ite 15

在备份过程中使用事务日志来存储在进行备份时提交的所有更改。这些更改应用于备份文件,以便备份在完成时保持一致(仅提交事务)。

但是三天能吃饱吗?我每天备份一个 TB 数据库,只需要 90 分钟(压缩、多个文件、SQL 原生)。鉴于您的版本,您应该考虑同时备份多个文件(或加快备份存储速度)。

:事务日志正被备份进程使用。

因为您将其发送给供应商,所以我怀疑您是通过文件共享直接从本地 SQL Server 将其发送到供应商(特别是因为您说本地备份只需要 90 分钟)。

对于这种情况,我建议您首先在本地备份(如果您处于 FULL/BULK 恢复模式,可能带有 COPY_ONLY 标志),然后将其发送给供应商。您不会将 SQL Server 与此备份捆绑在一起,并且您有机会使用 7zip 或类似工具压缩备份(这应该很容易将其减少 50%)。

  • 抱歉,我错过了您将问题上传给供应商的部分。绝对会建议将其带到本地,然后将其发送给供应商。(另外,可能会出现三天的传输错误)。此外,您可以在 .bak 文件上使用 zip,它会完成一个不错的压缩工作。 (5认同)