web-dev-qa-db-ja.com

SQL Serverのクエリは、最初の実行時にのみ実際に遅くなります

やや奇妙な問題...マシンを再起動した後に初めて.NETアプリを起動すると、SQL Serverのクエリが非常に遅くなります...デバッガーを一時停止すると、クエリからの応答の取得にハングしていることがわかります。これは、リモートSQLサーバー(2008)に接続する場合にのみ発生します...ローカルマシン上のサーバーに接続する場合は問題ありません。また、アプリを再起動すると、リモートSQLサーバーからでも高速に動作し、その後の実行も問題ありません。唯一の問題は、マシンを再起動した後、初めてリモートSQLサーバーに接続するときです。さらに、リモートSQLサーバーにも接続するサードパーティのアプリ(.NET)でも、これとまったく同じ動作に気づきました。

別の情報...これは、マシンをXPからWin7(64ビット)にアップグレードしてから始まったばかりです。また、Win7にアップグレードしたチームの他の開発者も同じように見えています動作(開発中のアプリとサードパーティの.NETアプリの両方)。

https://stackoverflow.com/questions/2014814/sql-server-queries-are-really-slow-only-on-first-run からコピー)

2
JoelFan

Windows Vista、Windows 7、およびSQL Server 2008には、XPおよびSQLServer2008とは異なる接続方法があります。

VistaまたはWindows7からSQL2008を実行しているWindows2008サーバーに接続すると、Windowsはセキュリティサポートプロバイダーインターフェイス[SSPI]を使用して接続のネゴシエーションを試みます。 http://support.Microsoft.com/kb/811889 で詳しく説明されている問題が発生することがあります。

この接続のネゴシエーションに遅延があると思います。 KBの記事でわかるように、接続に標準のNTLMネゴシエーションのみを使用するように強制する方法があります。

接続文字列にSSPI = NTLMを追加して、NTLMを強制しようとします。初期速度の低下が見られなくなった場合は、おそらく問題を示しています。

1
Wayne Arthurton

IPまたはホスト名でこのマシンに接続していますか?

このマシンをIPアドレスのみで排他的にアドレス指定するとどうなりますか? (接続文字列またはSQL Management Studio経由)

0
p.campbell

SQLクライアント接続の設定を確認してください(TCP/IPが最初ですか?)

hostsファイルのSQL2008マシンにエントリを追加します。再起動後にパフォーマンスが向上する場合は、名前解決の問題が発生しています。

0
Brett Veenstra