2009-10-24 93 views
0

我有一个存储在PC A上的Access数据库和一个位于PC B和C上的应用程序。当应用程序从数据库加载数据时,错误消息 “Microsoft Jet数据库引擎无法打开'\ xxx.xxx.xxx.xxx \ FolderName \ Test.mdb'文件,它已经被另一个用户独占打开,或者您需要查看其数据的权限,“出现。但是,如果我通过从PC B浏览一次并关闭数据库文件来打开数据库文件,则应用程序可以无误地加载数据,因此与PC C相同。无法获取MS Access数据库中的数据

PC以对等方式链接, app是桌面应用程序。任何人都可以给我任何解决方案来加载数据而无需打开数据库文件一次?

谢谢。

回答

1

这可能是由于应用程序上次使用时没有正确关闭。检查与数据库相同的目录中是否存在ldb(锁定文件)。用文本编辑器打开它,你可以看到最后一个使用db的人是谁。如果数据库没有正确关闭,它仍然可能被锁定。

+1

但是,如果多个人同时在数据库中,这将不会有用,因为您会在LDB文件中看到多个PC,而不知道哪个是最后一个。另外,这种情况很少发生,通常情况下只有当访问崩溃或PC被BSODed或突然断电时。 – 2009-10-24 06:45:42

0

sharing an Access database on a network (MDB)

要共享访问数据库,只需将* .mdb文件到网络共享,并通过网络将其打开。

+0

我已将数据库文件放入网络,但当应用程序访问时,出现错误消息(请参阅上文)。我必须打开数据库一次,然后应用程序可以访问。我将安全性设置为数据库文件属性中的Everyone(读取,写入)。 – 2009-10-24 05:28:07

1

在对等网络上,您需要将权限设置为完全控制。用户需要能够创建和删除LDB文件。在文件服务器上,详细权限类似于读取,写入,创建和删除。

+0

他们不需要能够删除LDB文件,虽然这确实允许用户透明地删除损坏的LDB。请记住,如果没有DELETE权限,LDB将以与Jet 3之前的方式完全相同的方式进行处理,即LDB文件在每个人都关闭之后仍保留在驱动器中,并且不会被删除。 – 2009-10-24 20:56:52

+0

是的,但我喜欢整洁,并在最后一个用户退出BE数据库文件时删除了LDB文件不需要我同意。 – 2009-10-24 22:29:15

0

这听起来像是一个网络问题给我。如果您已将表与UNC名称链接(显然使用IP地址,这是非常不明智的,除非它是无法更改的硬IP地址),这很好,但如果您设置了映射驱动器,则可以拥有一个优势它在登录时重新连接(而不是仅当请求数据时才重新连接),那就是在您首次通过Access请求时,已经初始化到“服务器”PC的连接。如果不是这样,它可能会导致速度减慢和错误的错误信息。

另一种选择是在客户端PC的Autoexec.bat中添加:

NET USE \\xxx.xxx.xxx.xxx\FolderName 

你不必把它映射到一个驱动器号,只是声明为可用。这将完成与自动重新连接映射驱动器相同的功能,但没有设置它的GUI(如映射驱动器)。