• ベストアンサー

VB6.0でSQLServerへ・・・RecordSet生成タイムアウト・・・

VB6.0でSQLServer2000へADOで接続して、RecordSetに結果を入れる際に「時間切れ」になってしまいます。コネクションはちゃんとできていて(connection.stateは1)で、 RecordSet.open(SQL文,connection,adOpenForwardOnly,adLockReadOnly)でしばらく待った後「Err.description」で時間切れと言われてしまいます。connection.ConnectionTimeout = 200にしてても時間切れです・・・(涙) でで、SQLServerのlocalhost端末のAccessからSQLServerにリンクをはって同様のSQL文(普通のSelect文です、Joinも副問い合わせとかもしてないです。)をクエリで実行したところ、結果が返ってくるまで15分くらいかかりました。抽出条件にIndexを張ってないため・・・(事情があってIndexはれないです)こういう場合、どのようにしてVBでRecordSetを取得すればいいのでしょうか?ConnectiontimeoutはrecordSet取得時にも有効ですか?そうだとしたら、connectiontimeoutは好きなだけ大きい値を設定してみてよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sawagani
  • ベストアンサー率73% (19/26)
回答No.2

SQL発行時であれば、ConnectionTimeoutではなくCommandTimeoutを設定してみてください。秒単位です。

参考URL:
http://www.microsoft.com/japan/msdn/library/ja/jpado260/htm/mdprocommandtimeout.asp?frame=true
usagi_mania
質問者

お礼

ありがとうございます☆ 早速この方法で試してみたところ、15分後くらいに(笑)見事にrecordsetに結果が入ってくれました☆ MicroSoftのHPにはなかなかいいネタがあるんですね☆本当にありがとうございました!!

その他の回答 (1)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

ADOのオブジェクト変数を宣言する Dim cnn As New ADODB.Connection Dim rec As New ADODB.Recordset cnn.Open ・・ ' 接続を確立する SQLステートメントを指定してレコードセットを作成する rec.Open "select * from テーブル", cnn, _ adOpenKeyset, adLockOptimistic でどうでしょう。

usagi_mania
質問者

お礼

ありがとうございます☆ recordset.open時の引数は全通り試して見ましたが、タイムアウトになってしまいました。 でも、困っているときにアドバイスいただきうれしかったです。本当にありがとうございました。

関連するQ&A