データベース接続時について


ポン太  2007-06-19 05:02:15  No: 136758

いつも参考にさせて頂いております。

Aというパソコンから、
B,C,D,E,Fのそれぞれのパソコンのデータベースに接続しています。
Bのパソコンが立ち上がっていない場合、接続出来ませんというメッセージが出るのに、すごい時間(20秒〜30秒位)がかかってしまいます。
5秒〜10秒位に短縮する方法はありますでしょうか?
宜しくお願い致します。

【開発環境】
・VB6SP6
・SQLServer7.0


ヤマ@文系  2007-06-19 22:17:18  No: 136759

せめて何を使って接続してるか書くとよいと思います。
adoならcommandtimeoutなどがあると思いますが。


特攻隊長まるるう  2007-06-19 23:48:34  No: 136760

パソコンが立ち上がっていないという状況の判断なら、
データベース接続用のオブジェクトとかで判断せず、
Ping を打ったほうが早いかもしんない。


ポン太  2007-06-20 01:22:27  No: 136761

すみません。
オープンする記述は以下になります。
宜しくお願いします。

Sub OpenDB()
    Dim DbName As String
    Dim Attribs As String
    Dim strCnn As String
    Dim AbortFlg As Integer
    Dim ErrorCondition
    Dim UpdateDb
    Dim Comp$  'データベース
    Dim Pt$
    Dim svi%, I%, C$, S%
    
    On Error GoTo DBErrorHandler    ' エラー トラップを有効にします。
    Set MyCon = New ADODB.Connection
    
    Connect_Flg = 0
    Comp = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=DB;Data Source=" & ShitenSvname
    S = InStr(1, Comp, "Source=")
    Saver_name = Mid$(Comp, S + 7)
    strCnn = Comp
    MyCon.Open strCnn
        MyTable.ActiveConnection = MyCon
        MyTable2.ActiveConnection = MyCon
        MyTable3.ActiveConnection = MyCon
        MyCon.CommandTimeout = 600
    On Error GoTo DBErrorHandler    ' エラー トラップを有効にします。
    Exit Sub
DBErrorHandler:
    ErrorCondition = True
    UpdateDb = False
    'MsgBox "データベースを開くことができません。", vbExclamation
    Connect_Flg = 9
    AbortFlg = 9
    Resume Next

End Sub


特攻隊長まるるう  2007-06-20 02:04:32  No: 136762

よろしくも何も。。。
>         MyCon.CommandTimeout = 600
CommandTimeout のアドバイスを受けているのだから、
調査した結果をポン太さんが報告すべき場面です。


ポン太  2007-06-20 22:27:51  No: 136763

お返事有難うございます。

CommandTimeoutについて調べてみます。
結果、報告させて頂きます。


もげ  2007-06-22 01:08:50  No: 136764

PCが起動していないのであれば、
>    MyCon.Open strCnn
の時点でエラーになるのではないですか?

ConnectionTimeoutプロパティについても調べてみてください。
(既定は15秒だったかと)


ポン太  2007-06-25 21:13:09  No: 136765

お返事有難うございます。

ConnectionTimeoutの数値を色々と変えてみましたが、時間は変わりません。
もげ様がおっしゃってる、MyCon.Open strCnn  の部分で時間がかかってしまうみたいです。
これはどうしようもないことなのでしょうか?

宜しくお願い致します。


もげ  2007-06-26 02:43:32  No: 136766

当方で確認しましたが、こんな感じです。
名前つきパイプで接続しようとすると時間がかかりますね。

Dim strCon As String
Dim cn As ADODB.Connection

Set cn = New ADODB.Connection
cn.ConnectionTimeout = 1
strCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI"
strCon = strCon & ";Persist Security Info=False"
strCon = strCon & ";Initial Catalog=hoge"
strCon = strCon & ";Network Library=dbmsscon" '接続をTCP/IPに限定
strCon = strCon & ";Data Source=moge\SQLEXPRESS"
cn.Open strCon
MsgBox "connect OK."
cn.Close
Set cn = Nothing


もげ  2007-06-26 17:43:46  No: 136767

>strCon = strCon & ";Network Library=dbmsscon" '接続をTCP/IPに限定

ごめんなさいスペルミスです。
正しくは、

strCon = strCon & ";Network Library=dbmssocn" '接続をTCP/IPに限定

m(_ _;)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加