【发布时间】:2013-03-04 17:38:09
【问题描述】:
我有一个 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];
}
}
【问题讨论】:
-
看看stackoverflow.com/questions/1937703/…。即 strDdl = "GRANT SELECT ON MSysObjects TO Admin;" CurrentProject.Connection.Execute strDdl
-
@Syn123 这给了我一个错误,即使我尝试在本地副本上执行此操作:
You do not have the necessary permissions to use the '' object. Have your system administrator or the person who created this object establish the appropriate permissions for you.想法如何解决这个问题?也许是因为我的是 MDB 而那个问题是 ACCDB?