1

由于历史原因,我们有一些旧的 vb6 服务器端代码运行在两个相同的 Windows 2008 服务器上,它们使用 dao 3.6 来访问后端 MS 访问数据库。这多年来一直运行良好,我们目前正在迁移所有代码。但是,运行代码的其中一台服务器变得不稳定,因此我们需要将代码移动到新服务器,因为迁移的解决方案暂时不会准备好。运行正常的服务器正在运行 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 版本并运行更多测试,看看是否是问题所在,但如果是这样,那就有点奇怪了......

4

1 回答 1

1

啊哈!虽然我们只使用 DAO,而不是完全访问,但这似乎是答案

http://social.technet.microsoft.com/Forums/en-US/officesetupdeployprevious/thread/2a34fc07-0a1e-4248-b866-2b1c60aabba2

当我进一步研究它时,代码运行良好的服务器是 Windows 2008 网络服务器,虽然它是 64 位,但与新机器 Windows Server 2008 R2 上的操作系统完全不同。解决方案似乎是回到服务器上的旧操作系统,而不是重写整个应用程序,这对我们来说是一件容易的事情。幸运的是,这只需要再运行几个月左右,因为整个事情都在重新编写。

于 2012-11-19T22:57:53.447 回答