x64: 找不到MSDAORA Provider
0 |
在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
C:\QueryExpress>corflags /32BIT+ QueryExpress.exe
CLR Header: 2.5
PE : PE32
CorFlags : 1
ILONLY : 1
32BIT : 0
Signed : 0
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 3.5.21022.8
Copyright (c) Microsoft Corporation. All rights reserved.
改過設定後再跑一次,這回就可以順利執行了。
Comments
Be the first to post a comment