编译访问 (mde) 文件的链接表问题

Posted

技术标签:

【中文标题】编译访问 (mde) 文件的链接表问题【英文标题】:Link tables issue for Compiled Access (mde) file 【发布时间】:2009-04-27 16:42:52 【问题描述】:

我有一个旧的编译访问应用程序mde 文件。此应用程序已将表链接到网络共享文件夹。我尝试在主数据库上使用升迁向导升级主数据库,一切顺利。然后当应用程序启动时,它会给出错误消息

Microsoft jet 数据库引擎找不到输入表或查询表

我已经检查了共享 mdb 文件,它有准确的表名和所有内容。 然后我打电话给开发这个应用程序的人。他说我必须重写应用程序才能不使用 Jet 引擎...

Jet Engine 与链接表有什么关系?我真的必须重写整个应用程序才能使用 ADO 吗?

【问题讨论】:

您升级了 .mde 还是 .mdb? 我升级了主 mdb 数据库。我刚刚升级以提高性能。我认为它会更快。 【参考方案1】:

很多问题:

    您有源 MDB 文件吗?如果链接表未正确连接,我不记得创建 MDE 是否会失败。无论如何,如果您最终需要更改应用程序,您将需要源 MDB 文件。

    您报告的错误消息应提供缺失表的名称。

    您知道何时报告错误吗?在许多地方,简单地将链接到 Jet MDB 后端的表替换为到服务器的 ODBC 链接并不能解决问题。例如,如果代码中有任何已保存的查询或 SQL 绕过链接表并使用直接连接字符串,则可能会产生如您所见的错误。

    关于开发人员的回应“我必须重写应用程序以不使用 Jet 引擎......”要么你误解了他所说的,要么你的开发人员完全无能。或者两者兼而有之,我猜。 Jet 与 ODBC 链接表配合得非常好,如果您使用的是 MDB 前端,则不可能完全消除 Jet,因为 MDB 是一个 Jet 数据文件。消除 Jet 的愿望主要来自那些懒得学习如何正确使用它的人。

在我看来,您好像遇到了一个未处理的错误,但关于产生它的信息不足。您需要实际的 MDB 对其进行故障排除,因为代码没有显示在 MDE 中,因此无法确定问题的实际根源是什么。如果您的开发人员不给您 MDB,那么您需要检查开发该应用程序的合同——如果您同意让他控制源代码,您基本上任由他摆布,应该解雇任何签署的人在那。值得一提的是,当我向客户交付 MDE 时,他们也会获得完整的 MDB。他们通常不会对它做任何事情,但如果我不再有空做进一步的开发工作,他们有源代码可以提供给任何他们想要的人。

最后,我认为即使您的应用程序正常运行,仅仅扩大规模也不太可能在性能或稳定性方面提供很多。确实,很多时候,90% 或更多的大型应用程序无需更改即可运行,但其他 10% 可能会有很大问题。通常,您需要将某些操作移至服务器端以获得服务器后端提供的效率。这意味着您的前端应用程序需要重新设计,以更好地与您扩大的后端一起工作。真实程度因应用程序而异,但很少有任何情况下都可以完全正常工作。

【讨论】:

+ 谢谢。无论如何,它不是关键任务应用程序。我只是想提高它链接到 SQL Server 的性能,但我没有考虑你提到的转换问题。 顺便说一句,这个人向我发送了 mdb 文件,现在它正在使用链接表。好像是Access mdb版本不兼容。【参考方案2】:

您是否更改了 Access 数据库版本? 您的 mdb 可能与旧版本的 Jet 驱动程序链接,这些驱动程序无法连接到较新的 mdb 版本。

【讨论】:

应用程序是在我用 Access 2003 创建的 OfficeXP 上编写的。

以上是关于编译访问 (mde) 文件的链接表问题的主要内容,如果未能解决你的问题,请参考以下文章

编译链接实战elf符号表

访问链接表管理

Windows MSVC 符号表(.lib文件)(C++符号表解析)(符号表是如何产生的)(第四步:链接)

访问不为 MySQL 链接表导入关系

ELF 动态链接 - so 的 重定位表

使 ODBC 链接访问表对用户可用