Sintomas
Considere o seguinte cenário:
-
Você tem aplicativos do Microsoft .NET Framework que usam sempre criptografados no SQL Server 2016 ou no banco de dados SQL do Azure.
-
As chaves mestras de coluna desses aplicativos são armazenadas no cofre de chaves do Azure.
Nesse cenário, os aplicativos experimentam travamentos. Portanto, os aplicativos não respondem (paralisa) ou passam por tempo limite.
Os deadlocks podem ocorrer durante tentativas de adquirir ou atualizar um token de autenticação para o cofre de chaves do Azure.
Causa
Quando um aplicativo consulta colunas criptografadas no banco de dados, o provedor de dados do .NET Framework para SQL Server chama o provedor do cofre de chave do Azure para sempre criptografado. Isso, por sua vez, chama uma tarefa assíncrona baseada em aplicativo que adquire ou atualiza um token para o cofre de chave do Azure. Este caminho de código no provedor do cofre de chaves do Azure para sempre as versões 2.0 do pacote do NuGet está propenso a deadlocks porque chama alguns métodos assíncronos de forma incorreta.
Resolução
O problema foi corrigido primeiro no provedor do cofre de chaves do Azure para a versão sempre criptografada 2.1.0.Se você usar o provedor do cofre de chaves do Azure e sempre criptografado, recomendamos que você reconstrua e implante novamente seu aplicativo para que ele use o provedor do Azure Key Vault para a versão 2.1.0 ou posterior.