武林網(www.vevb.com)在編寫WEB應用程式的過程中,我們常常要跟資料庫打交道,例如我們日常常用的資料庫ACCESS、SQL SERVER等。在連接這些資料庫的時候,系統往往會給我們一些象這類80004005錯誤,這些五花八門的錯誤訊息很另人頭痛。為了方便網友解決這類問題,本文將詳細的介紹與解答這類問題。
[錯誤訊息]
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.
[原因]
這個錯誤發生在IIS使用匿名帳號(通常是IUSR)時,該帳號在NT中對資料庫所在目錄
沒有正確的權限.
[解決方法]
1、檢查檔案和目錄的權限. 確保Evryone能夠在該目錄中有新建和刪除暫存檔案的權限。
2.檢查資料來源檔案(DSN)是否被別的程式標誌在使用中,這些程式一般都是Visual InterDev,關閉任何一個正在InterDev中開啟和資料庫連線的項目。
3.檢查ACCESS中的某個表是否在這時已連在一個網路伺服器上。
[錯誤訊息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn't use '(unknown)'; file
already in use.
[原因]
要連接ACCESS資料庫這時正在被使用使資料庫被鎖定,導致無法存取。
[錯誤訊息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default
driver specified.
[原因]
可能的原因是ConnectString在global.asa中初始化的Application連接字串,而這時global.asa檔案卻沒有正常運作。
[解決方法]
檢查賦值時是否正確,在asp中加入下面的程式碼:
<%= 'auth_user' is & request.servervariables(auth_user)%>
<P>
<%= 'auth_type' is & request.servervariables(auth_type)%>
<P>
<%= connection string is & session(your_connectionstring)%>
<P>
還有一個原因就是在ConnectString中加入了空格,例如
DSN = MyDSN; Database = Pubs;
試試看改成下面這個樣子:
DSN=MyDSN;Database=Pubs;
如果是global.asa還沒有被運行,檢查該檔案是否在運用程式的根目錄中,或者是虛擬目錄的根目錄中。
還有可能錯誤出現的原因是DSN名稱沒找著,可以用我提供的id=36767的辦法解決。最後是檢查是否安裝了最新的驅動程序,既是否是最新的MDAC版本。
[錯誤訊息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not ??
[原因]
這個錯誤有可能是出現在你的電腦上軟體安裝(或則反安裝)的順序上。如果ODBC的版本不一致的話,就會發生該錯誤。
[解決方法]
方法是安裝最新版本的MDAC。
[錯誤訊息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Access 97 ODBC driver Driver]General error Unable to open
registry key 'DriverId'.
[原因]
這個錯誤發生在從註冊表中讀取數值的時候。 使用regedit32.exe檢查註冊表的權限。
[錯誤訊息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][dbnmpntw]ConnectionOpen (CreateFile()).
[原因]
原因之一:當一個資料庫中包含有分別在不用機器上的許可關係時,這也可能發生在同一台機器上,當給一個關係設定了UNC路徑,而另一個關係卻是本機路徑。
原因之二:當使用者使用IIS匿名帳號登入後,對本地這台機器而言他是有權的,但是對於一個UNC路徑的機器,另外這台機器是不會認為你目前匿名登入的帳號在它那上面也是合法的。這樣它就不允許你存取它上面的資源,導致錯誤。
[解決方法]
1.在IIS工具中,改變IIS匿名帳號成另外一個基於域的帳號。 (也就是不使用匿名登入)
2、或則在那台你要存取資源的機器上也建立一個和目前匿名帳號相同的帳號,使用相同的密碼。
[錯誤訊息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005' Microsoft][ODBC
Microsoft SQL Driver] Logon Failed()
[原因]
這個錯誤是由SQL Server產生的,當它不接受或則不能夠認識這個登入帳號的時候,或是沒有使用管理員身分登錄,
也可能是在NT中沒有SQL影射帳號造成的。
[解決方法]
用系統管理員帳號(SA)登錄,一般密碼應該為空.注意,這時必須使用CoonectString而不能夠使用DSN文件。因為DSN中沒有保存使用者名稱和密碼。檢查NT是否為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 Server產生的,當它不接受或則不能夠認識這個登入帳號的時候,或是沒有使用管理員身分登錄,
也可能是在NT中沒有SQL影射帳號造成的。
[解決方法]
在SQL Server的Enterprise Manager中,選擇Server/SQL Server/Configure[ASCII
133]/Security Options/Standard。如果是執行在IIS4中,取消選擇該專案的Password Synchronization選項。
[錯誤訊息]
Microsoft OLE DB Provi