x64: 找不到MSDAORA Provider

在Windows 2008 x64上使用Query Express,選擇Mcirosoft Oracle driver時,出現以下錯誤訊息:

Unable to connect: The 'MSDAORA' provider is not registered on the local machine.

前往Google大廟參拜,得到的結論懷疑因程式預設以x64模式執行,試圖讀取x64版本OLE DB Driver時失敗(沒安裝或該Driver根本沒出x64版)。網上建議的解決方法多半是重Build Project,將Target由Any CPU改為x86。

雖然手上在用的QueryExpress是自己修改過的版本,要重Build不是難事。但我不禁在在想,如果手上只有exe沒有Source Code? 就只能攤手嗎?

再做了一下功課,發現有個工具corflags可以透過修改執行檔檔頭(CLR Header)的方式達到類似的效果。開啟Visual Studio 2008 Command Prompt(裡面有額外設定PATH,才能找到.NET SDK的工具檔),先用corflags QueryExpress.exe看設定,再用corflags /32BIT+ QueryExpress.exe,標註強迫在WoW64下以x86方式執行。

C:\QueryExpress>corflags QueryExpress.exe
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 1
ILONLY    : 1
32BIT     : 0
Signed    : 0

C:\QueryExpress>corflags /32BIT+ QueryExpress.exe
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

改過設定後再跑一次,這回就可以順利執行了。

歡迎推文分享:
Published 26 February 2009 09:59 AM 由 Jeffrey
Filed under: ,
Views: 15,130



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<February 2009>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication