使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

请考虑以下情况:

  • 你拥有在 SQL Server 2016 或 Azure SQL 数据库中 始终加密 的 Microsoft .net Framework 应用程序。

  • 这些应用程序的列主密钥存储在 Azure Key Vault 中。

在此方案中,应用程序体验死锁。 因此,应用程序将停止响应(挂起)或超时。 

在尝试获取或刷新 Azure Key Vault 的身份验证令牌的过程中,可能会发生死锁。

原因

当应用程序在数据库中查询加密的列时,SQL Server 的 .net Framework 数据提供程序将调用Azure Key 保管库提供程序以进行始终加密。这反过来会调用基于应用程序的异步任务,该任务获取或刷新 Azure Key Vault 的令牌。Azure Key Vault 提供程序中的此代码路径,用于始终加密的 NuGet 程序包版本2.0。 x 和 a.x 很容易出现死锁,因为它以不正确的方式调用某些异步方法。

解决方案

始终加密版本2.1.0 的 Azure Key 保管库提供程序中,此问题首先已修复。如果你使用 Always encrypted 和 Azure 密钥保管库提供程序,我们强烈建议你重新生成和重新部署你的应用程序,以使其 对始终加密的版本2.1.0 或更高版本使用 Azure Key Vault 提供程序

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×