ASP學(xué)習(xí):錯(cuò)誤信息處理方法
發(fā)布時(shí)間:2008-01-13 閱讀數(shù): 次 來(lái)源:網(wǎng)樂(lè)原科技
1.錯(cuò)誤信息(錯(cuò)誤信息我不用翻譯成中文了把,呵呵,大家諒解)
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database
engine cannot open the file '(unknown)'. It is already opened exclusively
by another user, or you need permission to view its data.
原因:
這個(gè)錯(cuò)誤發(fā)生在當(dāng)IIS使用匿名帳號(hào)(通常是IUSR)時(shí),該帳號(hào)在NT中對(duì)數(shù)據(jù)庫(kù)所在的目錄沒(méi)有正確的 權(quán)限.(這就是為什么在Win95和PWS下沒(méi)問(wèn)題,因?yàn)閣in95根本就沒(méi)有目錄權(quán)限這一說(shuō))檢查文件和目錄的權(quán)限. 確定你能夠在該目錄中有能夠新建和刪除臨時(shí)文件的權(quán)限。
這些臨時(shí)文件其實(shí)是數(shù)據(jù)庫(kù)建立在同一個(gè)目錄下的文件, 但是要注意的是,有可能這些文件
也可能建立在別的目錄,例如 /Winnt.
使用NT的文件監(jiān)視程序監(jiān)視文件失敗時(shí)到底是訪問(wèn)了什么目錄。
這個(gè)NT的文件監(jiān)視程序可以在這個(gè)地方下載http://www.sysinternals.com.
如果你對(duì)數(shù)據(jù)庫(kù)使用了一個(gè)網(wǎng)絡(luò)地址,例如映射地址,就要檢查一下共享文件和目錄的權(quán)限,
還要檢查一下數(shù)據(jù)源文件(DSN)是否被別的程序標(biāo)志成為正在使用中,
這些別的程序一般是Visual InterDev,關(guān)閉任何一個(gè)InterDev中的正打開(kāi)和數(shù)據(jù)庫(kù)連接的項(xiàng)目。
這個(gè)錯(cuò)誤還可能發(fā)生在這種情況:如果在DSN中使用了一個(gè)UNC路徑(就是通用命名協(xié)議),請(qǐng)改用本地路徑進(jìn)行測(cè)試,因?yàn)槿绻麑?duì)本地?cái)?shù)據(jù)庫(kù)使用UNC也可能出錯(cuò)。
還可能發(fā)生在這種情況,如果服務(wù)器要訪問(wèn)Access中的一個(gè)表,而這個(gè)表卻聯(lián)接在一個(gè)網(wǎng)絡(luò)服務(wù)器上。
2.錯(cuò)誤信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn't use '(unknown)'; file
already in use.
原因:
多人使用時(shí)數(shù)據(jù)庫(kù)被鎖定。
3.錯(cuò)誤信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default
driver specified.
原因:
最可能的原因是ConnectString是一個(gè)在global.asa中初始化的Session變量,但是global.asa
卻沒(méi)有正常工作。解決辦法是,檢查賦值時(shí)是否正確:(在你的asp中加入下面的代碼)
還有一個(gè)原因就是你在你的ConnectString中加入了多余的空格,例如
DSN = MyDSN; Database = Pubs;
試試改成下面這個(gè)樣子:
DSN=MyDSN;Database=Pubs;
如果是global.asa還沒(méi)有工作,檢查該文件是否在運(yùn)用程序的根目錄中,或者是虛擬目錄的根目錄中。