I/O 在数据库 DBName 上被冻结。无需用户操作

I/O is frozen on database DBName. No user action is required

我们在 Azure VM 上的 Windows Server 2019 上,安装了 SQL Server 2019 Enterprise CU4。 SQL 服务器差异备份作业间歇性失败。

我查看了 SQL 服务器错误日志,发现所有数据库都出现以下错误:

I/O is frozen on database DBName. No user action is required. However, if I/O is not resumed promptly, you could cancel the backup.

后跟以下错误日志:

I/O was resumed on database DBName. No user action is required.

发生此错误后,差异备份作业开始失败并出现以下错误:

Executing the query "BACKUP DATABASE [DBName] TO DISK = N'X:\MSSQL..." failed with the following error: "Cannot perform a differential backup for database "DBName", because a current database backup does not exist. Perform a full database backup by reissuing BACKUP DATABASE, omitting the WITH DIFFERENTIAL option. BACKUP DATABASE is terminating abnormally.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

此时我们无法进行任何进一步的差异备份,直到我们对数据库进行了完整备份。

我已经检查过,那里没有其他 SQL 代理作业 运行,我不明白为什么会出现此错误。

我在网上做了一些研究,这似乎是 SQL 服务器版本 2016、2017 和 2019 中的一个已知问题,但它已在所有这些版本的 CU 中修复。以下文章讨论了此问题并确认该问题已在 CU2 的 SQL Server 2019 中得到修复。

https://support.microsoft.com/en-us/help/4523102/fix-sql-server-database-remains-in-frozen-i-o-state-indefinitely-when

我们有 SQL 应用了 CU4 的 Server 2019。所以所有修复都应该来自 CU2。但是,我们仍然遇到 I/O 冻结问题。

非常感谢任何指点或建议。提前致谢。

设法找到这篇文章,该文章建议创建注册表项以更改 Azure VM 备份的行为,这会导致 VM 备份不会破坏差异备份链。

您必须创建的注册表项是:

[HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] "USEVSSCOPYBACKUP"="TRUE"

来源:https://docs.microsoft.com/en-us/azure/backup/backup-azure-vms-troubleshoot#troubleshoot-vm-snapshot-issues

文章部分:Troubleshoot VM snapshot issues