コンピュータがスリープから復帰したときにエラーを報告した古いビジュアルベーシック6アプリケーションがあります。この問題は、すべてのクライアントコンピュータで発生していませんでした(Windows 7と言います)。 vb6アプリケーションがまだ開いていて、このアプリケーションを使用しようとすると、次のエラーメッセージが表示されてクラッシュします。コンピュータがスリープ状態になった後にvb6アプリケーションでSQL Serverデータベースが失われる
私がデバッグ、私は問題を発見した:私は、データベースへの接続を維持するグローバル変数を持っています。この変数は、アプリケーションの開始時に1回だけ初期化されます。コンピュータがスリープ状態になり、後で何度か前に戻ると、この変数のステータスは「OPEN」ですが、実際には接続が失われています。この変数接続を「閉じる」してから「開く」とすると、データベースに問い合わせることができます。
私はデータベース接続を失ったのが普通かと思いますか?
' This is my global variable
Global cn As New ADODB.Connection
' Set connection properties for sql server.
cn.ConnectionTimeout = 25
cn.Provider = "sqloledb"
cn.Properties("Data Source").Value = ".\SQL2008"
cn.Properties("Initial Catalog").Value = DB_INITIAL_CATALOG
cn.Properties("User ID").Value = DB_USERNAME
cn.Properties("Password").Value = DB_PASSWORD
cn.Open
' This is a typical query on my database
Set rs = New ADODB.Recordset
strSql = "SELECT * FROM tblUsers"
rs.Open strSql, cn, adOpenKeyset
任意のアイデア:ここ
はいくつかのコードですか?
ありがとうございました。
感謝。私はこの種の問題が起きるのは奇妙に思えるのですか?私はそれほどエレガントなものではないと思うし、もっとプロフェッショナルな解決策があることを願っています。私の「一時的な」解決策はあなたのソリューションからあまり離れていません.dbを照会する前に、私はdbを偽装します。特定のエラーで失敗した場合は、db接続を閉じてrepoenします。 – Bronzato
コンピュータがスリープ状態になると、いつでもTCP/IP接続が切断されます。壊れた接続を確認して修復するのは、それを使用するソフトウェアによって異なります。これは珍しいことではありません。 –