使用 Windows 身份驗證時 SQL Server Management Studio 連接緩慢或超時
嘗試使用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 伺服器。