?? microsoft 數據訪問組件 (mdac) 收到 0x800040005 錯誤的一些常見原因.txt
字號:
如果頁面不允許匿名訪問,IIS 將會試圖驗證作出請求的用戶的身份,并使用其安全憑據控制其所有活動,如訪問數據庫
的活動。 下面對這種情形下失敗的兩個主要原因做了說明。
默認情況下,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/server/feature/security.asp
錯誤消息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' Microsoft][ODBC Microsoft SQL Driver] Logon
Failed()
原因
該錯誤是在 SQL 服務器不接受或不認可所提交的登錄帳戶及/或密碼(使用標準安全性時),或者沒有任何 Windows NT
帳戶映射到 SQL 帳戶(使用集成安全性時)時,由 SQL 服務器生成的。
如果使用的是標準安全性,說明 SQL 帳戶名和密碼不正確。 請嘗試使用系統管理員帳戶和密碼(UID= "SA",密碼為
空)。 這些必須在連接字符串行中定義, 因為 DSN 不存儲用戶名和密碼。
如果使用的是集成安全性,則檢查調用頁面的 Windows NT 帳戶,找出它所映射的目標帳戶。
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 帳戶。
請嘗試把 SQL 改用標準安全性(在 Enterprise Manager 中,選擇 Server/SQL Server/Configure/Security
Options/Standard。
如果您是在 IIS 4.0 下運行,則取消選擇該工程的密碼同步。
錯誤消息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access 97 Driver]
Couldn't lock file.
原因
這一錯誤可能是由于沒有正確的權限為 Microsoft Access 數據庫創建鎖定文件 (.ldb) 而引起的。 默認情況下,鎖定文
件與 Microsoft Access .mdb 文件創建在同一文件夾下。
請嘗試賦予訪問數據庫(通常是 IUSR_machinename)的用戶以共享/文件夾的完全控制權限。
有時,共享文件夾權限被設置為只讀。 您也可以嘗試更改連接模式,這時可以使用以下示例代碼:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = adModeShareDenyWrite '8
'From Adovbs.inc
'---- ConnectModeEnum values ----
'Const adModeUnknown = 0
'Const adModeRead = 1
'Const adModeWrite = 2
'Const adModeReadWrite = 3
'Const adModeShareDenyRead = 4
'Const adModeShareDenyWrite = 8
'Const adModeShareExclusive = &Hc
'Const adModeShareDenyNone = &H10
錯誤消息
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 spelled 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 Driver][DBNMPNTW]
ConnectionWrite (GetOverLappedResult()).
原因
“允許匿名用戶”環境被關閉時,Windows NT 在第一個請求完成后要關閉與 SQL Server 連接的管道。 這是因為,第一
個到 SQL Server 的連接是在 IIS 匿名用戶帳戶中建立的。 然后,IIS 或者選擇在同一線程上模擬瀏覽器客戶,或者嘗
試去訪問運行于模擬用戶環境中的其它線程上的連接。 無論是哪種情況,Windows NT 都會檢測有沒有誰試圖使用某個已
在其它用戶環境中打開的網絡命名管道句柄,并根據安全規則關閉該管道。 在 SQL Server 網絡監視器看來,這是
Windows NT 發出的關閉命名管道的請求,從而引起 Web 瀏覽器出錯。
錯誤消息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC SQL Server Driver][DBMSSOCN]
General network error. Check your network document
原因
這一錯誤可能發生在 SQL 服務器被重命名的情況下。 由于無法找到計算機名,引用舊名稱的 DSN 將會失敗。
錯誤消息
Microsoft OLE DB Provider for ODBC Drivers error '80040e21' Errors occurred
原因
這一錯誤可能是由于試圖向一個字段插入過多的數據,超過允許值而引起。 比如,一個 Microsoft Access 字段格式設置
為只接受 25 個字符,而試圖插入 26 個字符。
錯誤消息
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access 97 Driver]
Syntax error in INSERT INTO statement.
原因
某個列名可能是保留字,如 DATE。 請將列名稱改為一個非保留字,如 SaleDate。
錯誤消息
Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access 97 Driver]
Too few parameters. Expected 1.
原因
查詢語法中所使用的列名不存在。 往往,這只是個打字錯誤。 請對照數據庫中的列名,檢查查詢字符串中的列名。 如果
使用的是 Microsoft Access,要確保使用的是實際列名,而不是列的“顯示”名。
參考
如要啟用 Visual InterDev 的遠程工作站工作方式,請按照以下 Microsoft Knowledge Base 文章所述,以建立系統
DSN:
Q178215 HOWTO: 配置 VID 以用于身份驗證 Web 工程
Q174943 PRB: 80004005“Couldn't Use '(unknown)';File Already in Use”
Q173742 BUG: 限制 Web 訪問時,Global.asa 不被執行
Q172864 ASP 頁面無法訪問會話及應用程序對象
Q156526 連接 Access 數據源時的一般錯誤 =51
Q175671 PRB: 訪問時的 SQL80004005 ConnectionOpen (CreateFile()) 錯誤
Q149425 IDC: 執行查詢錯誤,沒有定義為有效用戶
Q167452 PRB: 使用 Access 數據源時的‘Not a valid path’錯誤
Q125767 PRB: 執行 SQL 查詢后的查詢過于復雜錯誤
Q166659 PRB: 第二次嘗試時訪問 SQL 數據庫失敗
Q166029 PRB: 使用 Access 時,無法打開不明文件
Q178215 HOWTO: 配置 VID 以用于身份驗證 Web 工程
''===================================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -