プロが教える店舗&オフィスのセキュリティ対策術

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は好きなだけ大きい値を設定してみてよいのでしょうか?

A 回答 (2件)

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

秒単位です。

参考URL:http://www.microsoft.com/japan/msdn/library/ja/j …
    • good
    • 0
この回答へのお礼

ありがとうございます☆
早速この方法で試してみたところ、15分後くらいに(笑)見事にrecordsetに結果が入ってくれました☆

MicroSoftのHPにはなかなかいいネタがあるんですね☆本当にありがとうございました!!

お礼日時:2005/01/15 17:54

ADOのオブジェクト変数を宣言する


Dim cnn As New ADODB.Connection
Dim rec As New ADODB.Recordset

cnn.Open ・・ ' 接続を確立する

SQLステートメントを指定してレコードセットを作成する
rec.Open "select * from テーブル", cnn, _
adOpenKeyset, adLockOptimistic
でどうでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/15 17:50

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