MS Access数据库通过网络共享

时间:2009-11-13 20:32:17

标签: .net ms-access odbc

我有一个简单的网站需要通过unc共享连接到访问数据库。

服务器是运行IIS 6的Windows 2003邮箱。连接是通过ODBC。

我们收到一条错误消息“〓 错误[42000] [Microsoft] [ODBC Microsoft Access驱动程序]不是有效密码 错误[IM006] [Microsoft] [ODBC驱动程序管理器]驱动程序的SQLSetConnectAttr失败

我猜测IIS服务器无法访问共享。应用程序池在网络服务下运行。

我该如何解决这个问题?

更新
这很奇怪。如果我在ODBC配置中检查了ReadOnly并且没有其他人附加到该数据库,则它可以正常工作。

如果其他人附加它然后它给我一个错误“HY000] [Microsoft] [ODBC Microsoft Access驱动程序] COuld不使用'(未知)';文件已在使用中。”

如果我取消选中只读配置(没有其他更改),则会显示“不是有效密码”。

3 个答案:

答案 0 :(得分:2)

  

如果我在ODBC配置中检查了ReadOnly并且没有其他人附加到该数据库,那么它可以正常工作

这表示您具有对共享的读取权限,但不具有写入权限。

答案 1 :(得分:1)

这是一个非常常见的问题。解决此问题的一种方法是在有权访问该共享的域用户下运行您的应用程序池,或让您的Web应用程序模拟有权访问该共享的域用户:

How to access network files from IIS applications

答案 2 :(得分:1)

这不是我有过的经验(我不认为Jet / ACE是网站的合适数据存储),但我对Jet / ACE了解很多。

当您设置为只读时,您获得连接表明Web服务器正在运行的用户因为您正在打开的文件缺少写入权限(或者更可能是对于它所在的文件夹和/或或通过网络提供的份额)。来自单个用户的只读连接不需要创建LDB文件(记录锁定文件)。如果Web服务器用户对存储MDB / ACCDB的文件夹没有CHANGE权限,则无法创建LDB文件,因此无法编辑该文件。

另外,请记住,Jet / ACE的所有操作都使用用户名。透明地它将使用没有密码的默认管理员帐户,但是您可能尝试提供一些其他用户名/密码对。在这种情况下,可能是您使用了错误的工作组文件,或者是您认为合适的不同工作组文件。