ASP.NET无法读取网络文件夹中的Access DB

时间:2013-03-04 17:38:10

标签: asp.net ms-access oledb

我有一个ASP.NET页面,需要将一些数据推送到使用Access 2003数据库作为后端的旧程序。我有我的连接字符串都设置为执行此操作(成功到数据库的本地副本)但是当我尝试从数据库中读取其网络共享位置时,我收到以下错误:

  

无法读取记录;没有'tblDevice'的读取权限。

数据库上没有密码或任何安全性,所以我很确定这与网络有关。我不知道有任何方法可以在connection string中包含网络登录名/密码。我认为这需要在文件夹中添加某个用户。但是,我不确定用户是否需要该文件夹的权限才能使用它(来自Visual Studio和IIS)。任何人都有过这类错误的经验,或者知道“用户”需要获得该文件夹的权限吗?


我的参考代码:

访问连接字符串

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\srv.local\SHAREDOCS\data.mdb;
    User Id=admin;Password=;

选择代码

public static DataTable GetDevices(string serialNum)
{
    var conn = new OleDbConnection();
    var builder = new OleDbConnectionStringBuilder();
    builder.ConnectionString = ConfigurationManager.ConnectionStrings["development"].ToString();
    conn = builder.ConnectionString;

    var sqlString = "SELECT DeviceID, SN FROM tblDevice WHERE Active=True AND SN=@serialNum ORDER BY SN, DeviceID; "

    using (var cmd = new OleDbCommand(sqlString, conn))
    {
        cmd.Parameters.AddWithValue("@serialNum", serialNum);
        var ds = new DataSet();
        var da = new OleDbDataAdapter(cmd);

        da.Fill(ds);

        return ds.Tables[0];
    }
}

2 个答案:

答案 0 :(得分:1)

最后想出来了,并没有接近我的预期。由于某些奇怪的原因,数据库在各种表上的权限存在随机差异。 (有些人完全访问,有些没有,有些混合...没有押韵或理由来自我对程序工作方式的了解。)要获得权限,我必须去这里(Access 2010但2003年MDB文件)

File -> Info -> Users and Permissions -> User and Group Permissions...

这给了我以下选项:

enter image description here

我所要做的就是检查每个对象的相应权限,现在它可以正常工作。

答案 1 :(得分:0)

检查运行应用程序池的服务帐户是否具有数据库权限。如果您的服务帐户在没有权限的情况下运行,那么您很可能遇到这样的问题。