2009-07-23 144 views
0

我不得不在經典的ASP中工作一個小的工作。 我想讓我的電腦上運行的網站進行測試。我正在運行Windows 7和IIS 7.經典的ASP連接訪問數據庫,找不到文件

從本地主機運行並檢查日誌時出現錯誤我收到錯誤: 80004005 | Could_not_find_file_'c:\的Inetpub \ wwwroot的\ SC \網站\ DATA \ si.mdb」

我的代碼是像這樣

dim objConn 
dim objRS 
set objConn = Server.CreateObject("ADODB.Connection") 

objConn.Provider="Microsoft.Jet.OLEDB.4.0" 
Set objRS = Server.CreateObject("ADODB.Recordset") 

objConn.Open("c:/inetpub/wwwroot/sc/website/data/si.mdb") 

這是但該文件的具體路徑。 任何人都知道我可以如何訪問它?代碼是否錯誤或是否需要設置IIS設置?

我沒有安裝任何版本的Office,會造成問題嗎?

我已經嘗試了很多不同的路徑和提供者設置,但都沒有工作。

編輯 我其實工作沒有代碼中的任何連接字符串的細節,但該人士稱它仍然工作thier計算機上爲朋友建立測試環境的代碼。

他不記得他的朋友是如何設置的,但他說:「我記得從他看來,他通過數據源(ODBC)連接到數據庫,因爲正如你在代碼中所說的那樣,沒有直接路徑,因爲它使用'全球性的東西「(不知道正確的詞)。」

+0

看到我最近編輯的名爲dsn。 – 2009-07-23 19:42:34

回答

1

你可以嘗試使用Process Monitor,看看到底哪些文件是不是被發現或者是由權限問題引起的。

此外,儘管使用正斜槓而不是反斜槓通常不是問題,但如果它有所不同,您可能想要嘗試更改。

如果您使用的是Windows的x64版本,則在此模式下不支持JET,但您可以通過configuring IIS to run x32 applications解決該問題。要做到這一點,請在命令行:

cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 "true" 
iisreset 

第二個命令可能不需要,但我猜你可能會需要這個變化生效之前重新啓動IIS。

聽起來好像代碼之前設置爲使用全局DSN,因此缺少連接字符串中的路徑,儘管應該還是有某種連接細節(如DSN名稱)。

1

使用,這可能是一個權限問題。

一個簡單的方法來檢查將充分獲得大家的目錄中的文件中。

+0

即使設置完全權限給每個人後,我仍然得到完全相同的錯誤:( – ddd 2009-07-23 18:20:57

0

連接字符串不正確的看向我。

看看this有幫助。

編輯:你有沒有安裝JET oledb提供程序?

EDIT2:在此問題的幫助下檢查是否存在oledb提供程序。
How to check if an OLEDB driver is installed on the system?

+0

我試過,但得到相同的錯誤。雖然當我嘗試工作組設置,我得到了一個不同的錯誤說| Could_not_find_installable_ISAM 但我不認爲這就是我想要的設置 – ddd 2009-07-23 18:48:21

+0

我將如何檢查嗎?我沒有安裝Office,所以不知道這是否是問題。我有VS2008專業版,但也許這是隨驅動程序? – ddd 2009-07-23 19:06:03

+0

看看這個http://stackoverflow.com/questions/113860/how-to-check-if-an-oledb-driver-is-installed-on-the-system幫助。 – shahkalpesh 2009-07-23 19:23:13

0

那天我回答了potentially related question。你正在運行64位Windows 7嗎?如果是這樣,那麼絕對不支持x64操作系統。在真正的.NET應用程序中,您可以簡單地使用x86作爲目標重新編譯應用程序。但在你的情況下,我不確定解決方案。

賽斯

0

爲什麼你的字符串說: 「C:/inetpub/wwwroot/sc/website/data/si.mdb」

而不是正常的Windows路徑 「C:\的Inetpub \ wwwroot \ sc \ website \ data \ si.mdb「

此外,您可以轉到控制面板 - >管理工具 - >數據源(ODBC)並在系統選項卡下創建一個新的名爲DSN。將它命名爲對例如,確保類型是訪問,給它正確的路徑Access數據庫,然後你的代碼也只是:

dim objConn 
set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open("si")