使用 SQL Server 身份驗證與 Azure SQL 數據庫的連接緩慢
在 SSMS 中,當使用服務帳戶和 SQL 伺服器身份驗證連接到我們的任何 Azure SQL 數據庫時,連接本身可能需要 10 到 15 秒才能建立。
連接後,右鍵點擊任何表並點擊“選擇前 1000 行”,這也需要 10 到 15 秒來響應並在 SSMS 中顯示行。
使用“Active Directory - Universal with MFA Supprt”身份驗證時不會發生這種延遲/滯後 - 但是,這不是使用相同的服務帳戶。
如何解決/調查 SQL Server 身份驗證滯後?
這是微軟對此問題的解釋:
它們描述了兩種類型的經過身份驗證的使用者。具有實例 LOGIN 的實例和只能訪問單個數據庫的實例(“包含”數據庫使用者)。
SSMS 連接速度慢的問題僅影響第一種類型的身份驗證(當他們有權訪問數據庫但無權訪問“主”數據庫時的登錄實例)。如果您能夠切換到“包含”數據庫使用者,那麼您可以完全避免該問題。
我想我想通了。SSMS 似乎正在嘗試與“主”數據庫互動,即使這不是正在連接的數據庫。我懷疑它正在悄悄地失敗/重試 - 最終結果是我們經歷的緩慢(……即使實際上沒有錯誤消息報告給我們)。
有官方文件解釋瞭如何在通過 SSMS 連接時更改所選數據庫。您可以這樣做以連接到“master”以外的東西。請參閱此處: https ://docs.microsoft.com/en-us/azure/azure-sql/database/troubleshoot-common-errors-issues
雖然所選數據庫的更改在技術上確實解決了連接問題,但仍然會出現緩慢。這似乎與您的數據庫使用者仍然沒有對“主”數據庫的完全訪問權限有關。
解決方法:使用 sql server 管理員連接到“master”數據庫。然後執行以下。
CREATE USER [sql-problem-user] FOR LOGIN [sql-problem-user] WITH DEFAULT_SCHEMA = dbo GO
完成此操作後,您的 sql-problem-user 將能夠更快地連接到您最初想要連接的原始數據庫。(它現在也可以連接到“master”)。希望這很清楚。一旦我發現了這一點,我就能找到很久以前使用過這種方法的其他人。請參閱https://stackoverflow.com/questions/29561876/azure-sql-database-slow
我正在使用 SSMS v18.5 (15.0.18330.0)。
我還注意到 Azure Data Studio 從未遇到過這種連接延遲。因此,也許有些人可以考慮遷移到該工具。我懷疑這是微軟認為將取代 SSMS 的工具。