如果不存在完整备份,事务日志备份将失败

CJM*_*CJM 0 backup transaction-log sql-server sql-server-2008

……至少我是这么认为的。

我最近修改了我的开发服务器上的备份程序。我为用户数据库创建了一个维护计划,该计划在全天的关键点执行一些每周清理任务、每日完整备份和事务日志备份。

直到今天,一切都运行良好,当时收到一封电子邮件,通知我午餐时间备份失败。日志查看器没有透露太多信息,除了在日志条目结束之前成功备份了一定数量的数据库:

[snipped] Source: ...  The package execution fa...  The step failed.
Run Code Online (Sandbox Code Playgroud)

不完全暴露

我突然想到,与以前的尝试相比,唯一的变化是我今天早上创建了一个新的(小而不起眼的)数据库。

我重新启动了 SQL Server 代理,并尝试手动重新运行(事务日志备份)步骤,但它再次失败。

但是,运行完整备份步骤(从而为我的新数据库创建第一个完整备份)有效 - 此外,再次重新运行事务日志备份步骤也有效。

由于缺少完整备份或以前的事务日志备份,事务日志备份似乎很困难。

这是预期的行为吗?一方面,在原始级别上,这种情况是有道理的,但实际上,我希望它能够更优雅地处理这种情况。

如果是这样,有没有办法自动处理这个问题?这种情况不会经常发生,但我不能指望在创建数据库时记得备份它,尤其是因为它仅处于开发的早期阶段。

如果不是,这种行为的可能原因是什么?我可以避免吗?

DCN*_*YAM 5

是的,这是预期的行为。为了使事务日志有用,需要有一个完整备份用作前滚的起点。

不要太担心。如果你创建一个新的数据库,第一天你就会得到那个错误。正如您所见,其他 DB 的日志备份将成功,但该错误只会使它看起来像该步骤失败,而实际上只有一个 DB 失败。然后,当晚(或任何时候),它将进行完整备份。之后,新数据库的 trans 日志备份将成功。基本上,在完整备份作业运行之前,当您创建新数据库时,您会有一天或错误。