2012-02-15 42 views
0

我有一個簡單的訪問數據庫駐留在網絡驅動器上。所有需要對此數據庫進行任何修改的人都可以在他們的機器上訪問,但他們希望只有一個只讀網站顯示其中包含的數據。我建立了一個網站並嘗試使用accessdatasource,並且當我可以連接時,每當用戶打開數據庫訪問權時,就會出現問題。我交換到使用sqldatasource與連接字符串根據www.connectionstrings.com設置,但我似乎有相同或相似的問題,這取決於我如何設置字符串/數據庫。基本上,整個問題是,如果數據庫被任何用戶打開,則網頁被阻止打開數據庫。是否可以打開僅從網頁上讀取的數據庫?使用Access數據庫的網頁,併發用戶問題

它是一個訪問2000年數據庫,但每個人都使用訪問2007年的副本,並且在所有這些實例中,ASP.NET用戶具有對包含數據庫的網絡目錄的讀/寫訪問權,並且可以讀取數據庫本身。

當我使用的連接字符串:在數據庫上

ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\<source>\<database>.mdb;User Id=<USER>;Password=<PASSWORD>;Mode=Share Deny Write;" 

如果不是默認的「admin」用戶,並且被配置爲具有開/運行(不開/排)的權限,我得到的錯誤:

Cannot start your application. The workgroup information file is missing or opened exclusively by another user.

據我所知,沒有工作組信息文件,但我不知道我在那裏做什麼。

當是默認的「admin」用戶,我得到的錯誤:

Could not use ''; file already in use.

如果有人對數據庫當前打開的,否則,它工作正常。

最後,如果我使用的連接字符串:

ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\<source>\<database>.mdb;User Id=<USER>;Password=<PASSWORD>;Mode=Read;" 

我得到的錯誤:

Could not lock file.

我一直在谷歌上搜索這個在過去的幾天,我感覺我我剛剛在圈子裏轉了一圈。任何有識之士將不勝感激。

+0

不知道答案是什麼,但'模式=共享拒絕Write'(第一的connectionString)肯定是不對的。 [防止其他人在寫模式下打開](http://msdn.microsoft.com/en-us/library/ms171763(v = SQL.90).aspx),如果已經打開了一個可寫連接,這將不起作用 – 2012-02-15 21:29:05

+1

你排除[此問題](http://office.microsoft。com/en-us/access-help/HV080760280.aspx)ASP.NET用戶無權寫入MDB所在目錄上的LDB文件? – 2012-02-15 21:34:15

+0

是的,用戶有權訪問該文件夾,如果我使用accessdatasource或sqldatasource與默認用戶,它可以連接並顯示數據,只要沒有人打開數據庫訪問權限即可。 – TheJubilex 2012-02-15 21:42:25

回答

0

因爲它是Access 2000格式,所以即使沒有安全設置,也必須是工作組文件(.mdw)。我會嘗試連接字符串,由此也指定了工作組位置如:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword; 

而且,我不建議設置讀/寫性能在連接字符串中,而不是我想你會得到更好的創建帳戶在工作組文件中,只分配它只讀權限。

更新:

這是ODBC連接方法:

Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=; 
+0

如果數據庫託管在網絡共享服務器上,我可以在哪裏找到工作組文件? (我沒有訪問權限,所以我需要做的是通過向我的部門中的其他人提出請求,所以它可能有點乏味) – TheJubilex 2012-02-16 16:09:14

+0

這取決於,如果他們沒有保護數據庫,那麼你可能能夠在沒有指定工作組文件的情況下訪問它,否則你需要爲某個文件路徑打擾某人。除此之外,您可以嘗試使用ODBC驅動程序而不是OLEDB驅動程序進行連接,我已將其添加到我的答案中。 – 2012-02-17 09:18:52