今天,在一台WIN2K SERVER 服務器上,通過ASP安裝在本機的 Oracle9i 數據庫時,發現錯誤,根本無法連接上數據庫。其錯誤描述如下:
Microsoft OLE DB PRovider for ODBC Drivers 錯誤 '80004005'
[Microsoft][ODBC 驅動程序 管理器] 驅動程序的 SQLAllocHandle on SQL_HANDLE_ENV 失敗
或
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'
由於系統錯誤 5 (Oracle in jxt_user),導致不能加載指定驅動程序
連接方式是通過ODBC,驅動程序包括 Oracle ODBC Driver 和 Microsoft ODBC Driver for Oracle 。
連接字串如下:
(1)CONNECTIONSTRING ="DSN=TXLTNS;UID=user;PWD=passWord"
(2)CONNECTIONSTRING ="DRIVER={Oracle in txl_user};UID=user;PWD=passWord;DBQ=TXLTNS;DBA=W;"
結果,都是無法正常運作。經檢查發現 %Oracle_HOME% 設置是正確的,也包含到PATH中了。
在 GOOGLE 搜索簡體中文的信息,發現一個信息說法如下:
“這個其實是由於Oracle9i裝在2000的NTFS分區上產生的錯誤。主要是IIS的權限不足,找不到Oracle9i的文件導致的錯誤。”
而且他還給出了一堆英文文摘,答題的意思是:%Oracle_HOME%這個目錄在安裝的時候,是單獨設置了權限的,默認是管理員組、SYSTEM組和一個名為“Authenticated Users”的組具有權限。他還說要這樣:
------------------------------------------
v. Click on "Authenticated Users" item in the "Name" list (on Windows xp the "Name" list is called "Group or user names").
vi. Uncheck the "Read and Execute" box in the "Permissions" list (on Windows XP the "Permissions" list is called "Permissions for Authenticated Users"). This box will be under the "Allow" column.
vii. Check the "Read and Execute" box. This is the box you just unchecked.
------------------------------------------
感覺這段英文的說法有點怪,為什麼要取消Authenticated Users組的“讀取和執行”權限呢,不是說權限不夠嗎?
繼續在Oracle 技術網查詢相關信息,發現這個信息:
-------------------------------------------
The Microsoft ODBC driver for Oracle is known not to work correctly on a 9.2 Oracle clIEnt. You need to use the Oracle ODBC driver if you're using the 9.2 clIEnt.
-------------------------------------------
這樣看來,這個錯誤的發生,與Oracle的安裝配置無關。因為之前測試過使用Java通過 JDBC 連接Oracle是成功的。
於是下載最新的 MDAC2.8 ,安裝完後,重新啟動計算機,再測試原來的ASP程序,發現已經成功連接到Oracle數據庫。
前面別人說的“權限”問題,看來在這裡並不適應。呵呵。