【发布时间】:2012-10-31 12:42:26
【问题描述】:
由于历史原因,我们有一些旧的 vb6 服务器端代码运行在两个相同的 Windows 2008 服务器机器上,它们使用 dao 3.6 访问后端 MS 访问数据库。这多年来一直运行良好,我们目前正在迁移所有代码。但是,运行代码的其中一台服务器变得不稳定,因此我们需要将代码移动到新服务器,因为迁移的解决方案暂时不会准备好。 运行正常的服务器正在运行 Windwos Server Web 2008 Sp1 64 位。新服务器是 Windows Server Standard 2008 R2 Standard Sp1。 在这个新服务器上运行测试时,我们开始在应用程序中随机冻结。有一个简单的循环在数据库中的每个表上运行一个选择查询。添加一堆日志记录后,它在调用 DAO.Database 对象的 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 版本并运行更多测试,看看是否是问题所在,但如果是这样,那就有点奇怪了......
【问题讨论】:
标签: vb6 windows-server-2008 dao