2

愚蠢的问题,也许。

我在我的机器上开发了一个应用程序,它使用 Microsoft Access 数据库 (.mdb) 访问某些信息并使用 OLEDb 使用监视数据填充表。

该应用程序在我的机器上运行良好,但是当我将版本放在测试机器上(没有 MS Access)时,它崩溃了。有趣的是,如果我要在测试机器上启动应用程序并使用刚刚重命名的数据库文件名,它会像它应该加载一样加载,尽管没有数据。

我似乎抛出了 UnauthorizedAccessException 异常,这进一步混淆了我的困惑。

开发机器和我正在测试它的机器都安装了.NET 3.5。

在回答我的问题时,我预计会有大量的“不”,但到底是什么 - 测试机器需要安装 MS Access 吗?

问候

4

6 回答 6

4

尝试在此处下载 Office 连接组件。这将使您无需安装 Access 即可读取和创建 Access 数据库。

于 2009-11-06T16:00:21.390 回答
2

它不需要 MS Access,但您需要您的 Access 版本所需的驱动程序。您可能需要执行一个测试版本,将确切的异常和消息输出到日志中。

于 2009-11-06T15:55:54.253 回答
2

确保您安装了最新的 Jet 4 OLEDB 驱动程序。如果您从网络共享运行应用程序(然后它以受限权限运行),也可能会出现问题。

于 2009-11-06T16:06:14.417 回答
1

你说你有一个UnauthorizedAccessException。我会先检查 .mdb 文件和位置的读/写权限。

如果您作为服务运行,请记住它们在更多受限帐户下运行。

于 2009-11-06T16:00:32.553 回答
1

您不需要 Access 本身。您需要让 JET 驱动程序和相关文件至少与您的开发机器上的文件一样最新——如果您正在回收旧机器用于测试,这可能是问题所在。

但是,这听起来确实像是权限问题,无论是在数据库文件本身上还是在文件内部(如果您使用 Access 的安全机制)。

于 2009-11-06T16:07:24.647 回答
1

原来问题是硬件问题。我正在使用的卡上的一个串行端口在移动到新机器时已被封存。

事实证明问题与数据库无关,正如异常所暗示的那样。

尽管如此,还是提出了一些关于 JET 的有趣观点,这对任何有数据库访问问题的人都可能有用。

谢谢你们的帮助。

于 2009-11-11T16:31:20.597 回答