我设置了一个每晚运行的作业,对服务器上的所有数据库进行完整备份。白天,另一个作业每隔几个小时进行差异备份。
问题出现在创建新数据库时。差异备份作业每次都会失败,直到自添加数据库以来第一次运行完整备份作业。此后,一切都按预期运行,至少在添加另一个新数据库之前。
当然,当还没有完整备份时,差异备份是没有意义的,我认为这就是我收到错误的原因。
问题是,我可以做些什么来防止这种情况发生,最好是每次添加新数据库时不需要手动操作?
答案1
第一个问题:为什么经常进行差异化?如果您需要这种级别的可恢复性,请将数据库设置为完全恢复并进行日志备份。
但对于您最初的问题,请重写备份过程以检测该数据库是否没有完整备份,如果没有,则执行完整备份。备份信息可以在 msdb 中的备份*表(backupset、backupmediaset 等)中找到。
答案2
是的,您可以编写一个在数据库创建时运行的完整备份脚本,或者在差异备份作业开始时添加一些代码来创建新数据库的完整备份。
或者您可以忽略错误,这可能很难,具体取决于错误的数量。
哪种操作是更好的选择取决于您尚未向我们透露的因素,因此我们无法说,但您应该能够确定是否值得在差异备份作业之前编写脚本来备份新数据库。