Azure DevOps Server 2019.1 (on-premises) 未发送备份失败通知

Azure DevOps Server 2019.1 (on-premises) Backup Failure notifications not being sent

我管理一个 TFS 服务器。昨晚我们从 TFS 2018.3 升级到 Azure DevOps Server 2019.1。

作为我们测试程序的一部分,我们测试备份失败(和通过)通知。这些通知也在升级之前进行了测试,两条通知消息都按预期发送。

升级前,计划备份被禁用。然后我们的备份文件夹被隔离到一个安全的位置(重命名)。已使用适当的权限设置为升级后的备份创建一个新文件夹。

升级完成后,配置了计划备份(与之前的设置相同)。配置成功,没有错误或警告。测试数据库短暂地出现在文件夹中。 BackupSettings.xml 出现在文件夹中并且看起来正确。

已启动完整备份。这被允许完成并且看起来正确。 BackupSets.xml 看起来正确。

我们的设置要求 "Transaction Log Backup Interval" 15 分钟。这似乎工作正常。所有数据库的所有正确的 .trn 文件都会在正确的时间出现在文件夹中。 (请注意,我们在完整备份期间收到了熟悉的 "blocked" Transactional_*.log" 结果。这是正常的和预期的。)

然后我们打开两个 "Provide Scheduled Backups Alert Settings"。 15 分钟间隔后,所有管理员都收到了 "Azure DevOps Database Backup Succeeded" 电子邮件警报。

此时我们阻止了写入 "Network Backup Path" 的权限。我在 "Azure DevOps Server Administration Console" 上监视了 "Job Schedule" window 以及失败的作业日志:https:///tfs/_oi/_jobmonitoring?_a=history

在 15 分钟 window 过去后,出现了一个失败的作业,其历史记录如下:

结果消息:

[1/26/2020 12:55:42 AM] [Info] Requested Backup Job: Transactional [1/26/2020 12:55:42 AM] [Info] ------------------------------------------------------------------- 
[1/26/2020 12:55:42 AM] [Info] Jobs Requested: Transactional. Completed: None. To Run: Transactional. 
[1/26/2020 12:55:42 AM] [Info] RunTransactionalBackupJob 
[1/26/2020 12:55:42 AM] [Error] Exception Message: Access to the path '\redacted\backup\production\BackupSets.xml.temp' is denied. (type UnauthorizedAccessException) 
Exception Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode) at Microsoft.TeamFoundation.Admin.BackupSets.Save(String folder) at Microsoft.TeamFoundation.Admin.BackupSets.Initialize() at Microsoft.TeamFoundation.Admin.BackupSets.Load(String folder) at Microsoft.TeamFoundation.Admin.Jobs.DatabaseBackupJob.RunTransactionalBackupJob(IVssRequestContext requestContext, BackupSettings settings, ITFLogger logger) at Microsoft.TeamFoundation.Admin.Jobs.DatabaseBackupJob.RunBackupJob(IVssRequestContext requestContext, BackupJobType requestedJobType, String& resultMessage) 
[1/26/2020 12:55:42 AM] [Info] Backup Job Finished. Completed: None. Result = Failed

作业计划 windows 正确更新并指出备份失败。

从未收到过失败通知电子邮件。

设置已检查,是正确的。设置被禁用并重新配置,然后重复测试。相同的结果。

已对通知设置进行调查,但似乎没有任何设置可以禁止发送备份失败通知。

我们在标题为 "Notification E-Mail Delivery" 的 _oi 页面上搜索了一个失败或部分成功的工作,没有这样的失败工作。

我们测试了 Notification E-Mail Delivery 作业,看看我们是否可以导致微不足道的 "Partially Succeeded" 结果。通过在我们的一个用户配置文件中放置一个虚假的电子邮件地址,我们可以做到这一点。作业结果出现,历史显示预期结果。我们恢复了错误的电子邮件设置,并验证了通知 E-Mail 交付中没有进一步的部分成功作业。

但是,没有迹象表明在备份失败的情况下,Azure DevOps Server 2019.1 曾经尝试过任何通知。

谁能帮忙解决这个问题?

"we blocked permissions to write to the "Network Backup Path"

如果您阻止了对备份位置的访问。不会发送备份失败电子邮件警报。

this thread所述,当备份位置不可用时,备份设置配置文件不可用,这是备份失败电子邮件警报未能发送出去的原因。为了测试备份失败警报,您可以尝试其他方式故意使备份失败