徵狀
請試想下列案例:
-
您的 Microsoft .NET Framework 應用程式在 SQL Server 2016 或 Azure SQL Database 中 一直使用加密 。
-
這些應用程式的欄主要金鑰會儲存在 Azure 金鑰保存庫中。
在這種情況下,應用程式會遇到鎖死。 因此,應用程式會變得不回應(掛起)或超時。
在嘗試取得或重新整理 Azure 金鑰保存庫的驗證權杖期間,可能會發生鎖死。
原因
當應用程式在資料庫中查詢加密的資料行時,SQL Server 的 .net Framework 資料提供者會呼叫Azure 金鑰保存庫提供程式,以進行永遠加密。如此一來,就會呼叫以應用程式為基礎的非同步工作,該工作會取得或刷新 Azure 金鑰保存庫的權杖。此程式碼路徑在您的 Azure 金鑰保存庫提供者中,您可以使用此程式碼來在 Always. x 和 a.x 中,輕鬆地以不正確的方式呼叫某些非同步方法。
解決方案
這個問題首先是在Azure 金鑰保存庫提供者中修正,以供 Always Encrypted 版本 2.1.0。如果您使用的是 Always encrypted 和 Azure 金鑰保存庫提供者,我們強烈建議您重建並重新部署您的應用程式,讓它使用 Azure 金鑰保存庫提供者,以用於 Always 2.1.0 或更新版本。