今天,在一台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資料庫。
前面別人說的「權限」問題,看來這裡不適應。呵呵。
附:
MDAC2.8 的下載網址:http: //www.microsoft.com/downloads/details.aspx?displaylang =zh-cn&FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c