いつも参考にさせて頂いております。
Aというパソコンから、
B,C,D,E,Fのそれぞれのパソコンのデータベースに接続しています。
Bのパソコンが立ち上がっていない場合、接続出来ませんというメッセージが出るのに、すごい時間(20秒〜30秒位)がかかってしまいます。
5秒〜10秒位に短縮する方法はありますでしょうか?
宜しくお願い致します。
【開発環境】
・VB6SP6
・SQLServer7.0
せめて何を使って接続してるか書くとよいと思います。
adoならcommandtimeoutなどがあると思いますが。
パソコンが立ち上がっていないという状況の判断なら、
データベース接続用のオブジェクトとかで判断せず、
Ping を打ったほうが早いかもしんない。
すみません。
オープンする記述は以下になります。
宜しくお願いします。
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
よろしくも何も。。。
> MyCon.CommandTimeout = 600
CommandTimeout のアドバイスを受けているのだから、
調査した結果をポン太さんが報告すべき場面です。
お返事有難うございます。
CommandTimeoutについて調べてみます。
結果、報告させて頂きます。
PCが起動していないのであれば、
> MyCon.Open strCnn
の時点でエラーになるのではないですか?
ConnectionTimeoutプロパティについても調べてみてください。
(既定は15秒だったかと)
お返事有難うございます。
ConnectionTimeoutの数値を色々と変えてみましたが、時間は変わりません。
もげ様がおっしゃってる、MyCon.Open strCnn の部分で時間がかかってしまうみたいです。
これはどうしようもないことなのでしょうか?
宜しくお願い致します。
当方で確認しましたが、こんな感じです。
名前つきパイプで接続しようとすると時間がかかりますね。
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
>strCon = strCon & ";Network Library=dbmsscon" '接続をTCP/IPに限定
ごめんなさいスペルミスです。
正しくは、
strCon = strCon & ";Network Library=dbmssocn" '接続をTCP/IPに限定
m(_ _;)m
ツイート | ![]() |