2015-07-10 48 views
-2

我正在開發一個ASP經典網站,它連接到MS Access數據庫並實時顯示數據(我知道MS Access不是此目的的最佳選擇,但我的公司使用它的一切,所以我只是決定現在使用它)。當MS數據庫位於我的硬盤驅動器(C :)上時,它工作正常。但是,當我移動數據庫的網絡位置,如U之一:\跟蹤,它給了我這個錯誤:Microsoft Jet數據庫引擎無法打開網絡位置上的文件

Microsoft JET Database Engine error '80004005' 
The Microsoft Jet database engine cannot open the file 'U:\tracking\database.mdb'. It is already opened exclusively by another user, or you need permission to view its data. 

我知道這可能是由於有關創建安全權限(讀寫)用於MS Access數據庫的臨時文件(.ldb)。我重置U:\ tracking文件夾中的安全權限,該文件夾包含數據庫,但它不起作用。我甚至完全控制了「組和用戶名」會話中列出的每個帳戶,但錯誤仍然存​​在。

我也在我的IIS管理器中檢查了我的身份驗證設置。唯一啓用的設置是匿名身份驗證,並且此時使用應用程序池標識。如果我使用特定的用戶,我可能會將其添加到上述權限列表中,並給予相應的權限,但我無法保證它是合適的。有關我應該如何連接到網絡位置上的數據庫的任何想法?任何幫助,將不勝感激!

以下是簡單的代碼,我用它來連接到數據庫:

Dim dbCon 
Set dbCon = Server.CreateObject("ADODB.Connection") 
dbCon.Provider = "Microsoft.Jet.OLEDB.4.0" 
dbCon.Open = "U:\tracking\database.mdb" 
+1

您需要授予對共享和文件夾本身的訪問權限。 – Gustav

+0

對不起,但是「授予訪問權限」是什麼意思?我能夠在U:/等網絡位置讀取/寫入/修改文件。 –

+0

與您的網絡管理員交談。共享擁有一組權限,驅動器/文件夾是另一組權限。有問題的權限不是你的,而是分配給應用程序的權限。 – Gustav

回答

-1

考慮使用ASO連接字符串參數,因爲這W3Schools page表示。如果server map targets the root directory,路徑名不需要明確定義。這一點尤其真實,因爲對於使用正斜槓的網址,反斜槓證明存在問題。

+0

謝謝,但使用ASO連接字符串參數並沒有改變任何東西。我認爲問題是關於網絡位置權限而不是關於連接的代碼。 Server.mappath可能不適用於我的情況,因爲我無法將我的數據庫放入我的網站的根目錄(由於特定的要求)。 –

+0

我想你可能是指ADO *(ActiveX數據對象)*。 Classic ASP使用的版本稱爲'ADODB' *(所有ADO組件使用的命名空間)*。 – Lankymart

+0

@GloomyMountain幾件事情,不要在可公開訪問的網站上使用MS Access使用SQL Express/MySQL或類似軟件,MS Access從來沒有被設計爲在Web環境中使用。 'Server.MapPath()'也是一個壞主意,因爲它要求數據庫可以從網站訪問,理想情況下,數據庫文件應該總是存儲在Web應用程序空間之外,並具有相應的權限以供Web應用程序訪問。但從你原來的問題你已經看到這一點。 – Lankymart

相關問題