2012-03-09 31 views
0

DAOを使用してSQL Serverにアクセスするアプリケーションの更新作業中です。私は知っていますが、DAOを今の要件と考えましょう。ネットワーク再接続後にSQLサーバーの接続が失敗する

アプリケーションはシステムトレイで常時実行され、定期的にSQL Serverの操作を実行します。それは常に実行されているので、アプリケーションのユーザーはノートパソコンや建物間で移行するため、アクティブ状態と非アクティブ状態の間を静かに移行するように設計しました。データベース接続が成功すると、操作が再開されます。

このアップデートをリリースする前に、最後の問題が1つあります。接続を切断してから再確立すると、SQL操作が失敗します。これは、接続文字列にホスト名を指定した場合にのみ発生します。私はIPを使用する場合、すべてが問題ありません(しかし、私はホスト名を使用する必要があります)。

動作は次のとおりです。

1)すべて動作します。良好なネットワーク接続、データベース操作は問題ありません。

2)接続が失われました。タスクバーのアイコンに「x」という小さな文字が表示されます。大丈夫。

3)再接続します。

手順3では、最初のクエリを実行すると「ODBC呼び出しに失敗しました」というエラーが表示されます。興味深いことに、データベースはまずエラーなしで開かれます。

手順1をスキップして、接続が切断されたときにアプリケーションを起動すると、手順3ですべて正常に動作します。

これはDAOエンジンが最初の接続後にDNSエントリをキャッシュする問題ですが、宛先IPは変更されないため、これについてはわかりません。私はWindowsのDNSキャッシュ(cmdプロンプトから)を何の効果もなくすことを試みました。開発用に設定したローカルSQLサーバーでローカルホスト名を使用している場合でも同じ動作が発生します。 127.0.0.1に問題はありません。

また、アクティブな時間の間にDAOインターフェイスをCoUninitialize()しようとしましたが、これを動作させるのに問題がありました。誰かがそれを助けてくれると思うなら、私はそれをもっと頑張ります。

この動作は、Windows XPまたはあなたが持っている何のための7

おかげで同じです!

編集:私は言及している必要があります - 私は

m_pDb = m_pDaoEngine->OpenDatabase() 

答えて

0

でそれを再オープン、その後、試行間のデータベース接続を閉じています、私は弾丸をかむとADOへアプリケーションを変換することになりました。今はすべてうまく動作し、データベース操作は起動するほうがはるかに高速です。