リモートマシンからSQLServer Management Studioから実行すると、実行に24〜38秒かかるクエリがありますが、SQL Server Management Studioを使用してローカルのマシンから実行すると、実行に1秒未満かかります。
SQL Server 2005 Windows Server 2003 R2 Standard Editionは、4GBのRAMとシングルCPUを搭載したVMWare3.5.0で仮想化されています。
また、SQL Mgmt Studioからだけでなく、アプリからも同じクエリの実行速度が遅いことを追加します。
ローカルでは超高速で、リモートマシンでは超低速で実行される理由について何か考えはありますか?
編集:SQL Serverは結果のキャッシュを異なる方法で処理しますか?これは、問題の原因となっているソフトウェアのベンダーがテーブルにインデックスを追加したため、結果が表示される原因となったため、ローカルと同じようにリモートですばやく尋ねられるためです。 SQLプロファイラーを使用して、クエリの完了にかかる時間を調べましたが、リモートクエリの完了には間違いなく時間がかかり、インデックスを追加した後も同じ時間がかかっているようです。
デフォルトでは、SQL Serverは、ローカル接続を行うときに共有メモリを使用して接続し、リモート接続を行うときにTCP/IPまたは名前付きパイプを使用して接続します。使用されているプロトコルに関連するものかどうかをテストするには、ローカルに接続してみますが、TCP/IPまたは名前付きパイプを使用するように強制します。
クエリの実行はまだ同じくらい遅いですか?
また、リモートで接続する場合、最初の接続は接続に時間がかかりますか?ここでの私の考えは、それが認証である可能性があるということです。
私の期待は次のいずれかです:
クエリウィンドウの[クライアント統計を含める]のツールバーボタンをクリックして、クエリの実行後に返される内容を確認します。サーバーから受信したバイト数、実行時間などを確認できます。
Client Execution Time 12:08:38
Query Profile Statistics
Number of INSERT, DELETE and UPDATE statements 0
Rows affected by INSERT, DELETE, or UPDATE statements 0
Number of SELECT statements 3
Rows returned by SELECT statements 15
Number of transactions 0
Network Statistics
Number of server roundtrips 3
TDS packets sent from client 3
TDS packets received from server 7
Bytes sent from client 240
Bytes received from server 21306
Time Statistics
Client processing time 31
Total execution time 61093
Wait time on server replies 61062
編集:
あなたのコメントは、39行しか返さないので、おそらくクライアントとサーバー間のデータ転送ではないと言っています。
クライアントにフィルターされたサーバーに対してSQLProfilerを実行し、何が起こっているのかを確認することを検討します。 SQLプロファイラーの使用に関するいくつかの素晴らしい記事があります。
リモートデスクトップなど、別の方法でマシンに接続しようとした場合のパフォーマンスはどうですか?マシンに到達しようとしたときにすべてが遅い場合は、ネットワークカード/ケーブルの破損、ルーター/ファイアウォールの問題など、ネットワークの問題が発生している可能性があります(ギガビットネットワークカードで10Mビットモードのサーバーをいくつか見ました: D)
ローカルサーバーから実行するときは、リモートで実行するときと同じユーザーを使用しますか? ADアカウントですか、それともSQLアカウントですか。
Sys.dm_os_waiting_tasksで待機タイプを探します