2012-12-11 25 views
0

Im具有與服務器中的ms訪問數據庫連接的c#應用程序的silverlight。我的連接字符串看起來像,當另一個應用程序使用相同的MS訪問文件時,連接MS Access數據庫

Provider=Microsoft.JET.OLEDB.4.0; Data Source=\\151.12.1.99\DatabasePath\Database.mdb; Jet OLEDB:Database Password=Password;Mode= Read 

它工作正常,當我直接執行應用程序沒有任何錯誤。但是當我部署應用程序時拋出

"The microsoft Jet database engine cannot open the file "\\151.12.1.99\DatabasePath\Database.mdb". It is already opened exclusively by another user, or you need permission to view its data. 

任何幫助我什麼是問題。我只在閱讀模式下打開文件。

+0

您是否對存儲mdb文件的文件夾擁有寫入權限?即使您打開只讀,它需要創建/編輯鎖定文件(.ldb)? –

+0

是的,我有文件夾的寫入權限。當我通過代碼執行時,我沒有任何問題。該錯誤只是部署並運行應用程序。 (注意:當我提到該文件夾​​已經存在.lbl文件時,表示該文件已經打開,但我想只選擇一些數據。 – saranya

+0

「ldb文件已經存在」,它聽起來好像有什麼打開的文件可能已經打開了獨佔模式,作爲一個附註,你沒有使用安全(mdw)文件,如果是的話,當你使用已部署的副本時,你是否還在使用相關的安全文件? –

回答

0

爲什麼不使用DSN呢?

問題是,一旦您的應用程序打開.mdb文件,它將保持「保留」該應用程序的實例。我認爲最簡單的方法就是使用DSN來讓ODBC管理數據庫訪問。

conn.ConnectionString = "FIL=MS Access;DSN=your_dsn_name"; 
+0

saranya:如果文件格式爲.mdb,那麼當您打開文件時,它會創建一個臨時文件,該文件將被刪除當連接到.mdb文件被正確關閉時,例如,如果拋出異常並且沒有處理,臨時文件將保留在文件系統中,從而阻止打開.mdb文件,或者刪除臨時文件得不或者你使用try ... catch來爲你處理這個任務。 –

+0

謝謝你的反饋安東尼奧。我試圖通過visual studio直接執行dsn連接,它工作正常。但是,當我發佈它給錯誤[HY024]有什麼我必須爲IIS設置權限。 – saranya

+0

saranya:檢查數據庫存儲的文件夾的權限。當您沒有權限訪問存儲文件的文件夾時,HY024錯誤很常見。它也可能是DNS的一種配置錯誤,如果您將它配置爲使用「Windows身份驗證」,它將在本地計算機或同一Windows域中的任何計算機上正常工作,但在您的「用戶」之外,它將「來賓「,不具有訪問該文件夾的相同權限。 –

相關問題