Sql-Server

使用 Windows 身份驗證時 SQL Server Management Studio 連接緩慢或超時

  • April 26, 2021

嘗試使用Windows Authentication通過 TCP 連接到 SQL Server 2012 實例時,我在 SQL Server Management Studio 2014 中遇到了極長的延遲(10~30 秒) 。連接對象資源管理器或新的空白查詢視窗時會發生這種情況。連接後,執行查詢會很快。當我使用 SQL Server 身份驗證進行連接時,問題不會發生。

環境:

  • Windows 7,以域使用者身份登錄
  • 通過 IP 地址(不是主機名)的 TCP 連接
  • 伺服器位於通過 VPN 連接的遠端位置
  • 無加密

當我使用我的域帳戶登錄同事的 Windows 7 電腦,並通過同一個 VPN 連接到同一個 SQL Server 時,沒有任何延遲。當同一位同事使用他自己的域帳戶登錄我的電腦時,他遇到了延遲。這些測試表明**問題是我的 PC 獨有的。**此外,該問題僅在連接到此特定 SQL Server 和 VPN 時出現;我可以毫無延遲地通過 Windows 身份驗證連接到本地網路上的其他 SQL Server。

我嘗試過但沒有成功的事情:

  • 禁用防病毒和防火牆
  • 將“%userprofile%\AppData\Roaming\Microsoft\SQL Server Management Studio”下的“12.0”文件夾重命名為“_12.0”,以強制 SSMS 重新創建我的使用者設置。
  • 強製網路協議為 TCP 而不是<default>. 我也嘗試過命名管道,但我的伺服器沒有為此設置。
  • 安裝了 SSMS 2012 並嘗試了它而不是 2014。
  • 禁用 IPv6
  • 在我的 etc\hosts 文件中將 crl.microsoft.com 黑洞化為 127.0.0.1。
  • 在 SSMS、Visual Studio 和 Windows 中禁用客戶體驗改善計劃。
  • 從我的電腦上解除安裝了所有與 SQL Server 相關的應用程序,並在 2012 年重新安裝。

TCPView 線索:

  • 使用 TCPView,我注意到當我建立一個新連接時,它的狀態會立即變為 ESTABLISHED,但隨後會不斷嘗試與 SQL Server 的一兩個連接,並使用 TIME_WAIT 關閉。在我同事的電腦上,這些連接已建立且穩固。所以我很確定這是超時的來源,但是連接是什麼,為什麼會失敗?(我的 SSMS 中沒有任何外掛。)

有任何想法嗎?

更新:智能感知/自動完成線索(?):

我注意到,一旦我最終連接,Intellisense/Autocomplete 就不起作用了。這些是否需要與 SSMS 單獨連接?我嘗試禁用它們,但似乎無法解決長時間的連接延遲。

嘗試在您和您的同事連接到伺服器時使用 SQL Profiler 執行跟踪。

選擇 RPC、SQL 語句和 PreConnect - 開始/完成。

選擇 Save Results To Table 選項,然後比較 2 個表以找到瓶頸。

或者,由於您通過 IP 連接,它可能正在執行反向 DNS 查找。如果是這樣,請在您的主機文件中添加一個條目。

您應該首先檢查的是您的伺服器或客戶端 DNS 設置

您的 SQL Server 在連接到 Active Directory 時遇到問題並不少見。如果您嘗試使用本地 Windows 帳戶,我相信您不會遇到問題。伺服器配置公共網際網路 DNS 並不少見,當 SQL Server 連接到 DC 以檢查憑據並驗證它時,它將嘗試頂部聯繫公共 DNS 而不是 AD 的 DNS 伺服器。由於此資訊未儲存在公共 DNS 上,因此無法驗證,這將導致延遲,直到它設法通過 NTLM 聯繫正確的 DNS 伺服器或 DC

由於您沒有遇到其他 SQL Server 的問題,因此幾乎可以肯定該問題與 AD 或 DC 配置無關

從 cmd觸發IPConfig.exe /all命令以檢查配置的 DNS 伺服器。您應該只配置 AD 的 DNS 伺服器。刪除所有公共 DNS 伺服器,只保留 AD 的 DNS 伺服器。

引用自:https://dba.stackexchange.com/questions/104378