餃子を食べるとき、何をつけますか?

1台のPCで発生している問題です。SQLServerで、Select命令は即戻ってくるのですが、Insertの処理は遅く、1件に2秒くらいかかっており、理由が分からず困っています。他のPCからは、SelectもInsertも問題ありません。

<SQLServer環境>
・バージョン:SQLServer2005 Express
・OS:WindowsXP
・ポート番号:1433固定

<クライアント環境>
・OS:Windows7
 ※問題の発生しているPCも、問題の発生しないPCも、共に同じOS・同様のスペックです。

<当方でテストした内容>
※全テストで、実行前にテーブルはtruncateし、トランザクションは未使用で実行しています。

(1) 1件づつ Insertし、計3000件を登録
   →問題発生PCでは、1件に2秒くらいかかる。問題なしPCでは、3秒くらいで全て終了

(2) sqlBulkCopyを利用し、配列変数に格納したデータ計3000件を一括登録 (配列格納後に測定)
   →問題発生PCでは、15秒で30件くらい。問題なしPCでは、3秒くらいで全て終了

(3) bcpin で、テキストファイルの計3000件を登録
   →問題発生PCでは、30秒くらい経っても開始されず。問題なしPCでは、1秒くらいで全て終了

(4) Select命令発行
   →問題発生PC、問題なしPC 共に、1秒くらいで全て終了。

(5) bcpout で、テーブルより計3000件をテキストファイルに落とす
   →問題発生PC、問題なしPC 共に、1秒くらいで全て終了。


bcpinについては、ためしに、 -S IPアドレス\Express,1433 と、ポート番号を付けて実行もしてみましたが、結果は同じで、問題発生PCでは、開始に時間がかかり、問題なしPCでは即終了しました。

以上の結果より、問題なく動くクライアントもあるため、Server側の問題ではなく、問題発生クライアントPCの環境に問題があるのではないかと思っていますが、SQLServerの接続、Selectやbcpoutには問題なく、Insertやbcpinといったデータ挿入のみが遅いという点で、何に問題があるのか、さっぱり検討がつきません。

このような場合、どういった点を調査したらよいのでしょうか?

A 回答 (2件)

    • good
    • 1
この回答へのお礼

遅くなってすみません。

ありがとうございます。教えてもらった「謎のおまじない」ですが、実は既に実行済みで、結果は変わらずでした(悲)。

ADOでのInsertはともかく、BCPでも遅いので、やはりPC環境だと思います。
そちら回りを再度調べてみようと思います。

レスいただき、有難うございました。
また困ったときは、よろしくお願いします。

お礼日時:2013/06/26 20:11

> (1) 1件づつ Insertし、計3000件を登録


>   →問題発生PCでは、1件に2秒くらいかかる。問題なしPCでは、3秒くらいで全て終了

ADO.NETのExecuteNoQueryの応答が2秒ですか?
均一に2秒ですか?徐々に遅くなって平均2秒ですか?

> 調査
SQL Server 2005 Express Profiler
http://www.atmarkit.co.jp/fdotnet/dotnettips/744 …

この回答への補足

はい。3000件ループさせて、ADO.NETのExecuteNoQueryでInsertを実行。Insert命令の直後に測定しました。
1件目から2秒程度かかります。徐々に遅くなることなく、だいたい均一で2秒くらいかかってます。

教えて頂いたプロファイラで、Inser処理がSQLServer側に到達していることは確認できました。
しかし、到達にやはり時間がかかっています。ためしにSELECT命令も実行してみたところ、やはり即到達しており、こちらは問題ありません。

なので、クライアントPCからSQLServerへ到達するまでの通信に問題がありそうです。
(ただし、SQLServer接続・SELECTには問題なし)

何か、お心当たりがありますでしょうか?

補足日時:2013/06/18 18:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報