我们在 Azure VM 上的 Windows Server 2019 上安装了 SQL Server 2019 Enterprise CU4。SQL Server 差异备份作业间歇性失败。
我查看了 SQL Server 错误日志,可以看到所有数据库的以下错误:
I/O 在数据库 DBName 上被冻结。无需用户操作。但是,如果 I/O 没有立即恢复,您可以取消备份。
后跟以下错误日志:
I/O 已在数据库 DBName 上恢复。无需用户操作。
发生此错误后,差异备份作业开始失败并出现以下错误:
执行查询“BACKUP DATABASE [DBName] TO DISK = N'X:\MSSQL...”失败并出现以下错误:“无法为数据库“DBName”执行差异备份,因为当前数据库备份不存在。执行通过重新发出 BACKUP DATABASE 进行完整数据库备份,省略 WITH DIFFERENTIAL 选项。BACKUP DATABASE 异常终止。"。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或连接未正确建立。
此时,在对数据库进行完整备份之前,我们无法进行任何进一步的差异备份。
我已经检查过,没有其他 SQL 代理作业正在运行,我不明白为什么会发生这个错误。
我在网上做了一些研究,这似乎是 SQL Server 版本 2016、2017 和 2019 中的一个已知问题,但它已在所有这些版本的 CU 中修复。以下文章讨论了此问题并确认该问题已在 CU2 中的 SQL Server 2019 中修复。
我们有应用了 CU4 的 SQL Server 2019。所以所有的修复都应该来自 CU2。但是,我们仍然遇到 I/O 冻结问题。
非常感谢任何指针或建议。提前致谢。
听起来您正在使用Azure Backups for SQL Server或Azure SQL Managed Backups。这会导致 I/O 冻结和恢复消息,因为它使用 VSS 和 SQL VSS 编写器执行备份。
这种类型的备份会导致本机 SQL 差异备份出现问题(请参阅此处),解决方案是停止执行本机备份或停止 Azure 备份。
设法找到这篇文章,它建议创建一个注册表项来更改 Azure VM 备份的行为,它会导致 VM 备份不会破坏差异备份链。
您必须创建的注册表项是:
来源:https ://learn.microsoft.com/en-us/azure/backup/backup-azure-vms-troubleshoot#troubleshoot-vm-snapshot-issues
文章部分:
Troubleshoot VM snapshot issues