フロントエンドが接続する複数のSQLサーバーがあります。一度にどのサーバーがオフラインであるかを確認するテストが必要です。SQL ServerへのVBAテスト接続
以下のコードは、オンラインSQLサーバーでは問題なく動作しますが、オフラインのテストでは30秒以上タイムアウトします。これは定期的に
Function ConTEST()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim strConnect As String
strConnect = "DRIVER={SQL Server};SERVER=SERVER;UID=UID;PWD=PWD;APP=Microsoft® Windows® Operating System;DATABASE=DB_NAME"
With conn
.ConnectionString = strConnect
.CommandTimeout = 5
.ConnectionTimeout = 5
.Open
End With
End Function
いただければ幸いです。このタイムアウトの問題を解決する方法上の任意の提案を実行されるチェックがあるとして、これは非常に迅速にタイムアウトする必要があります。
これらのチェックを定期的に行うためにスレッドを生成することは理にかなっていませんか?そうすれば、30秒のタイムアウトは必ずしも悪いことではありません。 – Fletchius
タイムアウトの前に接続がないと、エラーが発生すると思います。おそらく、conn.Stateをチェックする単純なエラーハンドラがそれを行うかもしれません。より詳細なアプローチ:https://support.microsoft.com/en-us/help/167957/info-extracting-error-information-from-ado-in-vb – wazz
応答をありがとう - 私は以前にこのエラーを実験したハンドラ - 残念ながら、エラーが出るまでにはサーバーあたり約30秒かかりますが、時間がかかりすぎます。理想的には、このエラーをスピードアップする方法はありますか? – TGChris