歴史的な理由から、dao 3.6 を使用してバックエンドの MS Access データベースにアクセスする 2 つの同一の Windows 2008 サーバー ボックスで実行されているレガシー vb6 サーバー側コードがいくつかあります。これは何年もうまく機能しており、現在、すべてのコードを移行中です。ただし、コードが実行されているサーバーの 1 つが不安定になっているため、移行されたソリューションの準備がしばらく整わないため、コードを新しいサーバーに移動する必要があります。正常に動作するサーバーは、Windwos Server Web 2008 SP1 64 ビットを実行しています。新しいサーバーは Windows Server Standard 2008 R2 Standard Sp1 です。この新しいサーバーでテストを実行すると、アプリケーションでランダムなフリーズが発生し始めました。データベース内のすべてのテーブルに対して選択クエリを実行する単純なループがあります。多数のログを追加した後、DAO の OpenRecordset メソッドの呼び出しでフリーズしていました。データベース オブジェクト。数秒間フリーズすることもあれば、最大10〜11分フリーズしてから続行することもあります. 実行されるクエリは次の形式であり、すべて 0 レコードを返す必要があります。
SELECT * FROM BlahBlah WHERE WriteTime > #25 Oct 2012 10:09:43#
データベース (つまり Access) で直接実行すると、正常に返されます。毎回ロックされるのも同じクエリではありません。ここで非常によく似た投稿を見つけるまで追跡できなかったソフトウェアに固有のものである可能性があると思いました(残念ながら、私のもの以外は返信がありませんでした!) http://www.vbforums.com/showthread.php ?653166-Using-Dao-3.6-on-Windows-server-2008&highlight=dao+3.6+server+2008
私がこれまでに見つけた唯一のことは、DAO360.dll が実行されているサーバー上のバージョンが 3.60.9704 であり、問題のあるサーバー上のバージョンが 3.60.9756 (つまり、Dao の新しいバージョン) であることです。手動で何もインストールまたは登録しませんでしたが、古いサーバーと同じように、Access 97 と Access 2003 を新しいサーバーにインストールしました。また、バックエンド コードをそのまま古いサーバーに移動すると、テストは正常に機能するので、それがコードではないことは確かです。
DAO が時代遅れであることなどはわかっていますが、移行されたソリューションが利用可能になり、完全にテストされるまで、このコードベースにこだわっています。それまでの間、新しいサーバーに 3.60.9704 バージョンを手動で登録して、それが問題かどうかを確認するためにさらにテストを実行しますが、問題がある場合はちょっと変です...