文章中的資訊適用於:
Microsoft Data Access Components versions 1.5, 2.0, 2.1, 2.5
Active Server Pages
Microsoft Visual InterDev, version 1.0
----------------------------------------------------------------------------
概要
本文詳細講述了 Microsoft 資料訪問組件 (MDAC) 收到 0x800040005 錯誤的一些常見原因,MDAC 包括 ActiveX 資料對象、OLE DB 和遠端資料服務 (RDS)。 同時,本文還討論了其它一些錯誤訊息,包括 80040e21、80040e14 和80040e10。
更多資訊
80004005 錯誤訊息可歸納為:“出於某種原因,我無法訪問您的資料”。 本文給出了各種 80004005 錯誤訊息的列表、其中列舉了這些錯誤訊息的最常見起因及其疑難解答步驟。 雖然本文假定您是在 Active Server Page (ASP) 頁面(.asp) 中使用 ActiveX 資料對象 (ADO),但這些起因和很多疑難解答步驟同樣適用於任何其它通過 ODBC 訪問資料的環境。
錯誤訊息列表
這一節我們介紹了各種錯誤訊息的文本,以及導致錯誤的原因。
錯誤訊息
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.
原因
該錯誤的發生,通常是因為 Internet Information Server (IIS) 所使用的帳戶(通常是 IUSR)沒有正確的 Windows NT 許可權,因而無法訪問基於檔案的資料庫或包含檔案的檔案夾。請檢查這些檔案和檔案夾的使用權限設定。 確認您能夠建立和/或刪除任何臨時檔案。 臨時
檔案一般都建立在與資料庫相同的檔案夾下,但也可以建立在其它檔案夾下,如 /Winnt。您可以使用 Windows NT 檔案監視器來檢查訪問檔案失敗的原因。 Windows NT 檔案監視器可從以下 Web 網站上得到:
當訪問連結到某個表的 Microsoft Access 資料庫時,如果這一表處在網路伺服器上的Access 資料庫中,這一錯誤也有可能發生。 這種情況下,請參見以下 Microsoft Knowledge Base 文章以找到可行的解決方案:
Q189408 PRB: ASP 無法訪問 IIS 4.0 下的網路檔案
錯誤訊息Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access 97 Driver] Couldn't use '(unknown)'; file already in use.
原因
資料庫無法正確地為多個使用者鎖定。 詳細資料請參見以下 Microsoft Knowledge Base文章:
Q174943 PRB: 80004005“Couldn't Use '(unknown)';File Already in Use”
錯誤訊息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified.
請從以下 Web 網站下載最新版的 MDAC(Microsoft 資料訪問組件),以升級所有的 ODBC 核心驅動程式:
http://www.microsoft.com/data/
錯誤訊息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Access 97 ODBC driver Driver]
General error Unable to open registry key 'DriverId'.
原因
這一錯誤是由從註冊表中讀取數值時引起的。 請用登錄編輯程式 (Regedt32.exe) 檢查登錄機碼上設定的許可權。 您也可以用 Windows NT 註冊表監視器 (NTRegMon) 來檢查註冊表讀取失敗。 NTRegMon 可從
以下 Web 網站下載:
http://www.sysinternals.com
錯誤訊息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC SQL Server Driver][dbnmpntw] ConnectionOpen (CreateFile()).
原因
這一錯誤有兩種原因。 它們都與許可權有關,或者資料庫與 Web 伺服器不在一台電腦上,或者資料庫正通過 UNC 路徑(\\Server\Share) 被引用。 即使資料庫與 Web 伺服器位於同一台電腦上,UNC 路徑也使 Web 伺服器認為資料庫好象位於網路上的另一台電腦上。
如果 .asp 頁面正被匿名使用者所訪問,就會發生以下情況:
IIS 將使用(預設)Windows NT 帳戶:
USR_。
因為該帳戶是 Web 伺服器的本地賬戶,所以網路上的其它電腦根本無從得知該帳戶。當 IIS(在 IUSR 帳戶的安全環境下運行)試圖訪問遠端電腦上的任何資源時,遠端電腦將驗證其使用的帳戶。 由於 IUSR 帳戶是本地帳戶,因此對於遠端電腦來說,它是無從得知的,所以訪問被拒絕。
當匿名訪問引發這個問題時,有兩個解決辦法:
在“Internet 服務管理員”工具中,從 Web 屬性下將匿名登入帳戶從預設的本地帳戶改為一個基於域的有效帳戶。 在使用者名稱欄位中,輸入要使用的域帳戶,格式為 domain\userid。 這樣,遠端電腦就能用網域控制站來驗證 IIS 傳遞給它的安全憑據。
-或者-
在包含您想要訪問的資源的遠端電腦上複製的帳戶
IUSR_。 如果帳戶是在遠端電腦上建立的,包含完全相同的名稱和密碼,Windows NT 把它
們視為等價帳戶。
預設情況下,IIS 被配置為以 Windows NT Challenge/Response 作為其驗證方法。
由於 Windows NT 4.0(及更早版本)安全模型的限制,經過 Windows NT Challenge/Response 身分識別驗證的使用者也無法訪問遠端電腦上的資源。 這通常
稱為委派問題。 要驗證是不是這種情況,可在“Internet 服務管理員”工具中,從 Web 屬性下選擇基本(明文)複選框,然後清除 Windows NT Challenge/Response。 如果這一步驟解決了問題,很明顯這是一個委派問題。
-或者-
如果問題仍舊存在,可能是所使用的使用者帳戶沒有正確的 SQL Windows NT 電腦許可權。 不妨嘗試使用一個明確擁有該SQL 電腦存取權限的帳戶。
有關委派、IIS 如何通過身分識別驗證來保護 Web 網站,以及相關問題的詳細資料,請參見文章“IIS Authentication and
Security for Internet Developers”,
它位於以下 Web 網站:
http://www.microsoft.com/workshop/s...re/security.asp
錯誤訊息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' Microsoft][ODBC Microsoft SQL Driver] Logon Failed()
原因
該錯誤是在 SQL 伺服器不接受或不認可所提交的登入帳戶及/或密碼(使用標準安全性時),或者沒有任何 Windows NT帳戶映射到 SQL 帳戶(使用整合式安全性時)時,由 SQL 伺服器產生的。
SQL 不允許 SQL 帳戶名稱中有底線。 如果某人把 Windows NT 帳戶 IUSR_machinename 手動映射到一個同名的 SQL 帳戶,就會失敗。 請把所有包含底線的帳戶都映射為 SQL 中不包含底線的帳戶名稱。
錯誤訊息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC SQL Server Driver][SQL Server] Login failed- User: Reason: Not defined as a valid user of a trusted
SQL Server connection.
原因
SQL Enterprise Manager(企業管理器)中開啟了整合式安全性,而所使用的 Windows NT 帳戶未被映射到 SQL 帳戶。
錯誤訊息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access 97 Driver] '(unknown)' isn't a valid path. Make sure that the path name is spel
led correctly and that you are connected to the server on which the file resides.
原因
Web 伺服器所讀取的路徑是無效路徑。 當 Global.asa 檔案正被使用,而連接字串是Web 伺服器之外的另一台電腦上建立的時候,最容易發生這種錯誤。 如果路徑是一個映像磁碟機代號,它可能只對建立連接字串的客戶電腦有效。
錯誤訊息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC SQL Server Driver][SQL Server] The query and the views in it exceed the limit of 16 tables.
原因
查詢過於複雜。 在查詢中有過多的限制。
錯誤訊息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC SQL Server
原因
“允許匿名使用者”環境被關閉時,WINDOWS NT 在第一個請求完成後要關閉與 SQL SERVER 串連的管道。 這是因為,第一個到 SQL SERVER 的串連是在 IIS 匿名使用者帳戶中建立的。 然後,IIS 或者選擇在同一線程上類比瀏覽器客戶,或者嘗試去訪問運行於類比使用者環境中的其它線程上的串連。 無論是哪種情況,WINDOWS NT 都會檢測有沒有誰試圖使用某個已在其它使用者環境中開啟的網路具名管道控制代碼,並根據安全規則關閉該管道。 在 SQL SE
RVER 網路監視器看來,這是WINDOWS NT 發出的關閉具名管道的請求,從而引起 WEB 瀏覽器出錯。
錯誤訊息
MICROSOFT OLE DB PROVIDER FOR ODBC DRIVERS ERROR '80004005' [MICROSOFT][ODBCSQL SERVER DRIVER][DBMSSOCN] GENERAL NETWORK ERROR. CHECK YOUR NETWORK DOCUMENT