2013-03-04 76 views
0

我有一個ASP.NET頁面需要將一些數據推送到使用Access 2003數據庫作爲後端的較舊程序。我有我的連接字符串都設立了這樣做(成功到數據庫的本地副本),但是當我試圖從它的網絡共享位置數據庫中讀取,我得到以下錯誤:網絡文件夾中的訪問數據庫無法被ASP.NET讀取

Record(s) cannot be read; no read permission on '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 [email protected] 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]; 
    } 
} 
+0

看看http://stackoverflow.com/questions/1937703/record-cannot-be-read-no-read-permission-on-msysobjects。即strDdl =「授予選擇MSysObjects到管理員;」 CurrentProject.Connection.Execute strDdl – RandomUs1r 2013-03-04 17:45:52

+0

@ Syn123即使我嘗試在本地副本上執行此操作,也會給我一個錯誤:'您沒有必要的權限來使用''對象。讓您的系統管理員或創建此對象的人員爲您建立適當的權限。「想法如何解決這個問題?也許是因爲我的MDB和那個問題是ACCDB? – techturtle 2013-03-04 18:13:07

回答

1

終於明白了這一點,並沒有接近我的預期。出於某種奇怪的原因,數據庫在各種表格上的權限存在隨機差異。 (有些人有完全訪問權限,有的沒有,有的是混合的......沒有關於程序工作方式的知識或原因。)爲了獲得權限,我必須去這裏(Access 2010,但是一個2003 MDB文件)

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

那我提出了以下選項:

enter image description here

我所要做的就是檢查每個對象的相應權限,現在,它的工作原理。

0

檢查您的服務帳戶,您的應用程序p ool正在對數據庫有權限運行。如果您的服務帳戶在沒有權限的情況下運行,那麼您很可能會遇到類似這樣的問題。

+0

現在,我仍然只是試圖從Visual Studio調試訪問它。我不認爲它有與之相關的服務帳戶。你知道它在做什麼嗎? – techturtle 2013-03-04 17:47:11

+0

什麼版本的.net框架?我猜它是在本地服務帳戶下運行的。像computername \ ASPNET。 – TimWagaman 2013-03-04 17:53:47

+0

Framework版本= .net 4.0。我怎麼知道我的機器上運行着哪些服務帳戶? – techturtle 2013-03-04 18:00:28