Avamar:SQL 多流备份和还原可能会失败,并显示“API 正在等待,并且超时间隔已过”

Summary: 当六个或更多流备份或恢复 SQL Server 2017 2019 上的 ~1 TB 数据库时,作业可能会停止并超时,因为 VDI 使用信号灯计数而不是 SetEvent,从而导致 avsql 中出现死锁。

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

大型 SQL 备份因多个流而失败

  • SQL 多流备份和还原可能会失败,并显示以下错误:
    2021-09-16 15:01:54 avsql Error <6478>: VDS::Getconfig failed with 'The api was waiting and the timeout interval had elapsed' 
    2021-09-16 15:01:54 avsql Error <6478>: VDS::Getconfig failed with 'The api was waiting and the timeout interval had elapsed' 
    2021-09-16 15:01:54 avsql Error <6478>: VDS::Getconfig failed with 'The api was waiting and the timeout interval had elapsed' 
    2021-09-16 15:01:54 avsql Error <6479>: Timed out. Was Microsoft SQLServer running?
  • 所有生成的 avtar 线程 “avsql stack execution” 不显示进度字节。
  • 当为大约 1 TB 或更大的数据库配置六个或更多流时,会出现此问题。
  • 此问题会影响 Microsoft SQL Server 2017 和 2019 环境。使用单个流运行备份将完成,但需要更长时间。

Cause

由 VDI 行为更改导致的死锁

此问题是由 SQL Server 2017 和 2019 的 Microsoft 虚拟设备接口 (VDI) 实施中的更改引起的。在 SQL Server 2016 中, avsql 插件程序使用了 SetEvent 用于表示备份配置完成的参数。从 SQL Server 2017/2019 开始,VDI 层改为使用信号灯计数。启用多流时, avsql 组件递增信号灯计数,这使该计数保持为非零,并创建死锁,以防止 “avsql” 线程无法继续进行,从而导致超时错误。

  • SQL 2016 之间的 VDI 行为差异 (SetEvent) 和 SQL 2017/2019(信号灯)。
  • Avamar “avsql” 组件需要 SetEvent 语义。
  • 多流会激活处理信号灯的代码路径。
  • 死锁会导致生成的 avtar 线程没有进展和超时消息。
工程团队更正了插件程序逻辑以减少信号灯数量,从而消除死锁。

Resolution

永久解决方案

将 Avamar 备份客户端和 SQL 插件程序升级到版本 19.10 或更高版本,其中包括代码修复。戴尔建议升级到最新的受支持版本(例如 Avamar 19.12.x),以获得最新的修复和增强功能。 

为已安装的版本应用最新的累积热修复程序:

  • 对于版本 19.10.100-166 HF338875
  • 对于版本 19.12.100-186 HF953552

从戴尔支持网站下载所需的热修复程序:

有关详细信息,请参阅文章 Avamar:如何从戴尔支持查找和下载热修复程序、修补程序或安装和升级包

Affected Products

Avamar
Article Properties
Article Number: 000200834
Article Type: Solution
Last Modified: 21 Sep 2026
Version:  7
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.