![网络上连接到 Access DB 时出错](https://linux22.com/image/1365248/%E7%BD%91%E7%BB%9C%E4%B8%8A%E8%BF%9E%E6%8E%A5%E5%88%B0%20Access%20DB%20%E6%97%B6%E5%87%BA%E9%94%99.png)
我有两台 PC,它们通过 WAN 互相连接。
我已经共享了包含一个文件夹Access Database
,并且我授予每个人对数据库本身的所有内容的权限。
现在我正在使用的代码是:
string connectionString = string.Empty;
connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\winPcDemo-570f\abcd\testDB.mdb; Jet OLEDB:Database Password=**********;";
OleDbConnection tmpconnection = new OleDbConnection(connectionString);
tmpconnection.Open(); // ERROR
但这会出现一个错误:
磁盘或网络错误。
它与本网站上的任何其他问题都不一样,所以我发布此问题。
答案1
如果您尝试从资源管理器访问 \\Macbookpro-570f\abcd\ 来检查网络或共享设置是否存在问题,这将会很有帮助。(用结果更新您的答案)。
不过,我首先想到的是权限。Access 需要足够的权限才能在同一文件夹中创建其 .ldb 文件,并且能够修改 .mdb 文件。Windows 共享有 2 组适用的权限。第一组是共享上的权限,第二组是文件/文件夹上的实际 NTFS 权限。您需要确保这两个权限集都授予正确的用户足够的权限来修改 mdb 和创建 ldb。
答案2
我会尝试将路径映射到驱动器号。转到命令提示符(可能需要以管理员身份打开)并执行以下操作:
net use q: \\winPcDemo-570f\abcd mypassword /USER:myaccount
(如有必要,mypassword 和 my account 应该是您的凭证。如有必要,您还可以使用 q 以外的其他驱动器号。)
然后你可以使用
Data Source=Q:\testDB.mdb
代替
Data Source=\\winPcDemo-570f\abcd\testDB.mdb
我认为它应该按照您指定的方式工作,但也许这可以让您排除它是代码问题还是操作系统/权限问题。
希望这可以帮助!