win2003 64位系統(tǒng)下ODBC連接使用方法
環(huán)境
一般系統(tǒng)部署的服務器若是windows系統(tǒng),就會采用64位win2003的結(jié)構。可是我們編寫的程序絕大多數(shù)都是在x86下32位cpu架構中編譯的,要正常移植到64位機器還真的是很麻煩,不僅要求應用程序是64位模式編譯,還需要數(shù)據(jù)庫也得是64位,iis64位,framework64位,好在相應的廠商都提供這些支持組件。不知道有人遇到過像我這樣的問題么,應用中有需要增加一個Access數(shù)據(jù)庫導入功能,這就需要連接ODBC的mdb驅(qū)動,可是Microsoft OLE DB Provider for Jet不支持64位系統(tǒng),即使安裝了office2007后,發(fā)現(xiàn)ODBC也沒有任何變化,這下尷尬了。
分析
對64位系統(tǒng)結(jié)構進行分析。
c盤下有兩個程序安裝目錄:Program Files和Program Files (x86);
windows文件夾下有兩個目錄:System32和SysWOW64;
在System32中的odbcad32.exe中沒有其他驅(qū)動(這也是控制面板中ODBC直接啟動的程序),但是在SysWOW64下的odbcad32.exe卻存在mdb之類的所有驅(qū)動,這說明ODBC驅(qū)動在操作系統(tǒng)中是存在的,只是因為運行模式導致調(diào)用的odbc程序不同,造成找不到對應的驅(qū)動。了解到這一點,就能找到解決方案:切換64位運行模式為32位。
解決步驟
切換IIS運行模式為32位
開始→運行→cmd,運行腳本:
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
即可將IIS由64位切換為32位模式;若想恢復為64位模式,運行腳本:cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0。若腳本報錯,切換路徑為C:\Inetpub\AdminScripts,因為adsutil.vbs文件在該路徑下。
Asp.net運行模式為32位
重新注冊asp.net,開始→運行→cmd
運行腳本:%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.40607\aspnet_regiis.exe -i
。
若要注冊64位,腳本為:%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.40607\aspnet_regiis.exe -i
。
重啟機器,IIS即可運行32位的程序,ODBC的連接也生效了。
Oracle64位切換為32位的方法
若以前系統(tǒng)運行在64位模式下使用的是64位的oracle,修改為32位模式后程序的數(shù)據(jù)庫連接就失敗,會報:“如果在安裝 32 位 Oracle 客戶端組件的情況下以 64 位模式運行……”這個錯誤。想到的方法自然是再安裝32位的oracle客戶端了。其實最簡單的方法是下載ORALCE工具包Instant Client Package。將其解壓到任意文件夾下,如D:\oracle\instantclient_11_2。
設置對應的環(huán)境變量:右擊”我的電腦” – “屬性” – “高級” – “環(huán)境變量” – “系統(tǒng)環(huán)境變量”:
1、新建NLS_lANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(注意中間有空格,這個如果不設,toad查詢中文會是亂碼)
2、新建或修改TNS_ADMIN=D:\oracle\instantclient_11_2
3、修改Path增加D:\oracle\instantclient_11_2,同時刪除原來64位oracle的路徑
其中第一條很重要,解決運行時報:Ora-12705: cannot access nls data files or invalid environment specified的錯誤。
新建文本文件,修改后綴名為reg,內(nèi)容為:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1] ”NLS_LANG”=”SIMPLIFIED CHINESE_CHINA.ZHS16GBK” ”O(jiān)RACLE_BUNDLE_NAME”=”Standard” ”O(jiān)RACLE_GROUP_NAME”=”O(jiān)racle – OraClient10g_home1″ ”O(jiān)RACLE_HOME”=”D:\oracle\instantclient_11_2” ”O(jiān)RACLE_HOME_KEY”=”SOFTWARE\\ORACLE\\KEY_OraClient10g_home1″ ”O(jiān)RACLE_HOME_NAME”=”O(jiān)raClient10g_home1″
雙擊導入注冊表。
將64位oracle的tns文件拷入D:\oracle\instantclient_11_2中,否則運行會報:ORA-12154: TNS:could not resolve the connect identifier specified錯誤。
完成以上修改后,重啟電腦,運行網(wǎng)站程序,發(fā)現(xiàn)一切都如期望的一樣工作!
祝大家好運!
相關文章
Windows Server 2012 R2或2016無法安裝.NET Framework 3.5.1的解決方法
這篇文章主要為大家詳細介紹了Windows Server 2012 R2或2016無法安裝.NET Framework 3.5.1,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05WIN10下的JDK安裝與配置環(huán)境變量的過程(詳細版)
這篇文章主要介紹了WIN10下的JDK安裝與配置環(huán)境變量的常見問題分析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06IIS6批量添加主機頭 IIS6批量綁定主機頭(利用IIS6導入導出XML)
因為對iis6添加了很多的主機頭,如果一個一個的添加很累,所以想到了批量添加,經(jīng)過測試發(fā)現(xiàn),可以用如下方法2012-12-12WQL語言簡介和WQL測試工具wbemtest.exe使用方法詳細介紹
這篇文章主要介紹了WQL語言簡介和WQL測試工具wbemtest.exe使用方法詳細介紹,WQL是指Windows管理規(guī)范查詢語言,需要的朋友可以參考下2014-07-07IIS環(huán)境下PHP rewrite重寫設置(支持中文參數(shù))
這篇文章主要介紹了IIS環(huán)境下PHP重寫設置 支持中文參數(shù),需要的朋友可以參考下2014-06-06如何在IIS環(huán)境下配置Rewrite規(guī)則 圖文
URL 靜態(tài)化可以提高搜索引擎抓取,開啟本功能需要對 Web 服務器增加相應的 Rewrite 規(guī)則,且會輕微增加服務器負擔。本教程講解如何在 IIS 環(huán)境下配置各個產(chǎn)品的 Rewrite 規(guī)則。2011-08-08阿里云主機Windows Server 2008系統(tǒng)自動激活圖文教程
這篇文章主要介紹了阿里云主機Windows Server 2008系統(tǒng)自動激活圖文教程,本文對每一步都做了圖文解說,需要的朋友可以參考下2014-09-09