Sintomi
Considerare lo scenario descritto di seguito:
-
Si hanno applicazioni Microsoft .NET Framework che usano sempre crittografate in sql server 2016 o in database SQL di Azure.
-
Le chiavi master della colonna per queste applicazioni sono archiviate nel Vault della chiave di Azure.
In questo scenario le applicazioni si verificano in deadlock. Di conseguenza, le applicazioni diventano non rispondenti (blocco) o timeout.
I deadlock possono verificarsi durante il tentativo di acquisire o aggiornare un token di autenticazione per il Vault della chiave di Azure.
Causa
Quando un'applicazione esegue query su colonne crittografate nel database, il provider di dati .NET Framework per SQL Server chiama il provider di archiviazione delle chiavi di Azure per sempre crittografato. Questo, a sua volta, chiama un'attività asincrona basata su applicazione che acquisisce o aggiorna un token per l'archiviazione delle chiavi di Azure. Questo percorso di codice in Azure Key Vault provider per le versioni di pacchetto NuGet sempre crittografate 2.0. x e 1. x. x è soggetto a deadlock perché chiama alcuni metodi asincroni in modo errato.
Risoluzione
Il problema è stato risolto per la prima volta in Azure Key Vault provider per la versione sempre crittografata di 2.1.0.Se si usa sempre il provider crittografato e Key Vault di Azure, è consigliabile ricostruire e ridistribuire l'applicazione in modo che usi il provider Key Vault di Azure per la versione sempre crittografata di 2.1.0 o versioni successive.