Применяется к
SQL Database SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Service Pack 1 Key Vault

Проблемы

Рассмотрим следующий сценарий.

  • У вас есть приложения Microsoft .NET Framework, которые всегда шифруются в базе данных sql Server 2016 или Azure.

  • Главные ключи столбцов для этих приложений хранятся в хранилище ключей Azure.

В этом сценарии приложения взаимоблокировками. Таким образом, приложение перестает отвечать на запросы (зависает) или исключается время ожидания. 

Взаимоблокировки могут возникать во время попыток получить или обновить маркер проверки подлинности для хранилища ключей Azure.

Причина

Когда приложение запрашивает зашифрованные столбцы в базе данных, поставщик данных .NET Framework для SQL Server вызывает поставщик хранилища ключей Azure, чтобы он всегда был зашифрован. Это, в свою очередь, вызывает асинхронную задачу на основе приложения, которая получает или обновляет маркер для хранилища ключей Azure. Этот путь кода в поставщике хранилища ключей Azure для всегда зашифрованных версий пакета NuGet 2.0. x и 1. x. x является уязвимым для взаимоблокировок из-за того, что он вызывает некоторые асинхронные методы неправильным образом.

Решение

Эта проблема впервые была исправлена в поставщике хранилища ключей Azure для версии 2.1.0, которая всегда зашифрована.Если вы используете Always Encrypting и поставщик хранилища ключей Azure, настоятельно рекомендуем перестраивать и повторно развертывать приложение, чтобы использовать поставщик хранилища ключей Azure для 2.1.0 или более поздней версии.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.