web-dev-qa-db-ja.com

SQL Server Management StudioでWindows認証を使用すると接続またはタイムアウトが遅くなる

TCP Windows Authenticationを使用してSQL Server 2012インスタンスに接続しようとすると、SQL Server Management Studio 2014で非常に長い遅延(10〜30秒)が発生します。これは、オブジェクトエクスプローラまたは新しい空白のクエリウィンドウを接続するときに発生します。接続すると、クエリの実行が高速になります。SQL Server認証を使用して接続する場合、問題は発生しません。

環境:

  • Windows 7、ドメインユーザーとしてログイン
  • IPアドレス(ホスト名ではない)経由のTCP接続
  • サーバーがVPN経由で接続されたリモートの場所にある
  • 暗号化なし

ドメインアカウントを使用して同僚のWindows 7コンピューターにログインし、同じVPNを介して同じSQL Serverに接続したところ、遅延はありませんでした。同じ同僚が自分のドメインアカウントで私のPCにログインしたときに、遅延が発生しました。これらのテストは、次のことを示しています問題は私のPCに固有です。また、問題はこの特定のSQL ServerとVPNに接続しているときにのみ発生します。 Windows認証を介してローカルネットワーク上の他のSQL Serverに遅延なく接続できます。

私が成功せずに試したこと:

  • ウイルス対策とファイアウォールを無効化
  • 「%userprofile%\ AppData\Roaming\Microsoft\SQL Server Management Studio」の下の「12.0」フォルダの名前を「_12.0」に変更して、SSMSがユーザー設定を強制的に再作成するようにしました。
  • ネットワークプロトコルを<default>ではなくTCP=に強制します。名前付きパイプも試しましたが、サーバーがそのように設定されていません。
  • SSMS 2012をインストールし、2014の代わりにそれを試しました。
  • 無効なIPv6
  • Etc\hostsファイルのブラックホールcrl.Microsoft.comを127.0.0.1に。
  • SSMS、Visual Studio、およびWindowsのカスタマーエクスペリエンス向上プログラムを無効にしました。
  • PCからすべてのSQL Server関連のアプリをアンインストールし、2012年に再インストールしました。

TCPView手がかり:

  • TCPViewを使用して、新しい接続を作成すると、その状態がすぐにESTABLISHEDになることに気付きましたが、SQL Serverとの接続がさらに1つまたは2つ試行され、TIME_WAIT。私の同僚のコンピューターでは、これらの接続は確立されており、しっかりしています。これがタイムアウトの原因であると確信していますが、接続の目的は何ですか?なぜ失敗するのですか? (私のSSMSにはアドオンがありません。)

何か案は?

更新:Intellisense/Autocomplete clue(?):

最終的に接続すると、Intellisense/Autocompleteが機能しないことに気づきました。それらはSSMSからの個別の接続を必要としますか?私はそれらを無効にしてみましたが、長い接続遅延を解決できなかったようです。

24
Jordan Rieger

あなたとあなたの同僚がサーバーに接続している間に、SQLプロファイラーでトレースを実行してみてください。
RPC、SQLステートメント、およびPreConnect-開始/完了を選択します。
[結果をテーブルに保存]オプションを選択し、2つのテーブルを比較してボトルネックを見つけます。

または、IPで接続しているため、逆DNSルックアップを実行している可能性があります。その場合は、hostsファイルにエントリを追加します。

20
d-_-b

最初に確認する必要があるのは、サーバーまたはクライアントのDNS設定です。

SQL ServerがActive Directoryへの接続に問題があるのは珍しいことではありません。ローカルのWindowsアカウントで試してみると、問題が発生することはないと思います。サーバーがパブリックインターネットDNSで構成されていることは珍しいことではなく、SQL ServerがDCに接続して資格情報を確認し、それを確認すると、サーバーのDNSサーバーではなくパブリックDNSに接続しようとします。 AD。この情報はパブリックDNSに保存されないため、検証に失敗し、適切なDNSサーバーに接続するか、NTLM経由でDC=)に接続するまでに遅延が発生します。

他のSQLサーバーで問題が発生していないので、ほとんどの場合、問題はADまたはDC構成に関連していません)

コマンドからIPConfig.exe/allコマンドを実行して、構成されたDNSサーバーを確認します。 ADのDNSサーバーのみを構成する必要があります。すべてのパブリックDNSサーバーを削除し、ADのDNSサーバーのみを残します。

5
NikolaD

拡張したC:\Windows\System32\drivers\etc\hostsファイルに次のような行を追加します。

201.202.203.204     mysqlserver

201.202.203.204はSQL ServerのIPアドレスです。

mysqlserver-好きな名前(どこでも使用する必要はありません)。

これにより、サーバーが高速になりました。

おかげで:d -_- b、ヨルダン、リーガー、felickz、RobbZ

0
Dennis Gorelik

ドメインネットワークプロファイルのSQLサーバーでWindowsファイアウォールをオフにします。

  • Powershellを起動する
  • Get-NetFirewallProfile -Profile Domainを実行して、現在の状態を確認します
  • 有効になっている場合は、Set-NetFirewallProfile -Profile Domain -Enabled Falseを実行して無効にします。

これがそうだった場合は、後で再びオンにして、設定を微調整できます。または、安全な環境にいる場合は、そのままにしておくこともできます。

奇妙なことに、Windowsファイアウォールが通信をブロックした場合でも、接続は可能ですが、最初のハンドシェイクと後続の要求の両方が非常に遅くなります。私の理論(実際の証拠に基づくものではない)は、これらの場合、通信はリモートPC間ではるかに遅い名前付きパイプにフォールバックするというものです。

0
Laszlo Mako