ODBC 管理員工具會在 64 位元版本的 Windows 顯示 32 位元和 64 位元的使用者名稱 (dsn)

文章翻譯 文章翻譯
文章編號: 942976 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

64 位元版本的 Microsoft Windows 作業系統包括下列版本的「Microsoft 開放式資料庫連接 (ODBC) 資料來源管理員」工具 (Odbcad32.exe):
  • 32 位元版本的 Odbcad32.exe 檔案位於 %systemdrive%\Windows\SysWoW64 資料夾中。
  • 64 位元版本的 Odbcad32.exe 檔案位於 %systemdrive%\Windows\System32 資料夾中。
Odbcad32.exe 檔案會顯示下列類型的資料來源名稱 (DSN):
  • 系統名稱 (DSN)
  • 使用者名稱 (DSN)

徵狀 1

32 位元版本的「ODBC 管理員」工具會顯示32 位元系統名稱 (DSN)、32 位元的使用者名稱 (DSN) 及 64 位元的使用者名稱 (DSN)。64 位元版本的「ODBC 管理員」工具則會顯示 64 位元系統名稱 (DSN)、32 位元的使用者名稱 (DSN) 及 64 位元的使用者名稱 (DSN)。

徵狀 2

SQLDataSources 函數會傳回所有的使用者名稱 (DSN),不論應用程式的架構版本。在 32 位元應用程式呼叫 SQLDataSources 函式會傳回只 32 位元驅動程式的系統名稱 (DSN),但卻會傳回 32 位元驅動程式 及 64 位元驅動程式的使用者名稱 (DSN)。同樣地,在 64 位元應用程式呼叫 SQLDataSources 函式會傳回只 64 位元驅動程式的系統名稱 (DSN),但卻會傳回 32 位元驅動程式 及 64 位元驅動程式的使用者名稱 (DSN)。因此,當應用程式會藉由使用SQLDataSources函式所傳回的資料來源名稱的使用者來連線時,您可能會收到下列錯誤訊息:
找不到資料來源名稱] 及 [指定預設驅動程式
比方說,請考慮下列案例。您為 32 位元驅動程式所建立的使用者資料來源名稱為「Microsoft 存取驅動程式 (*.mdb)」。此驅動程式並沒有相對應的 64 位元版本。在 64 位元應用程式呼叫 SQLDataSources 函式會傳回這個 32 位元使用者資料來源名稱。不過,如果通過這個 32 位元使用者資料來源名稱建立連線,您就會收到本節稍早提到的錯誤訊息。

發生的原因

使用者名稱 (dsn) 會儲存下列登錄子機碼下:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
登錄重新導向不會啟用這個登錄子機碼。因此,使用者名稱 (dsn) 會顯示在 32 位元和 64 位元版本的 [ODBC 管理員] 工具中。

解決方案

若要維護回溯相容性,目前沒有可用於這個問題的解決方法。

其他可行方案

如果要暫時略過這個問題,請使用 [ODBC 管理員] 工具的適當版本。如果您要在 64 位元作業系統上執行 32 位元應用程式,您必須利用 %windir%\syswow64\odbcad32.exe 中的 [ODBC 管理員] 工具來建立 ODBC 資料來源。若要表示資料來源名稱的型別,您可以對 32 位元的使用者名稱 (DSN) 新增「_32」,而 64 位元的使用者名稱 (DSN) 新增「_64」。

其他相關資訊

可以從 [控制台] 叫用 64 位元的「ODBC 系統管理員」工具,來管理 64 位元處理程序所使用的使用者名稱 (DSN) 及系統名稱 (DSN)。在 64 位元作業系統上,32 位元的「ODBC 系統管理員」工具可在 Windows 上用於 Windows 64 (WOW64) 處理程序。您必須直接從 [SysWoW64] 資料夾叫用 32 位元的 ODBC 管理員工具。您可以使用 32 位元的「ODBC 系統管理員」工具來管理 WOW64 處理程序所使用的使用者名稱 (DSN) 和系統名稱 (DSN)。

系統名稱 (dsn) 都儲存在下列登錄子機碼:
HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI
登錄重新導向已啟用這個登錄子機碼。因此,32 位元驅動程式與 64 位元驅動程式的系統名稱 (DSN) 會分開。64 位元的 ODBC 管理員工具不再顯示由 32 位元的「ODBC 系統管理員」工具所建立的系統名稱 (DSN)。同樣地,32 位元的「ODBC 管理員工具」也不再顯示 64 位元「ODBC 系統管理員」工具所建立的系統名稱 (DSN)。此外,64 位元的 ODBC 管理員工具不會顯示系統使用 32 位元驅動程式的名稱 (dsn)。同樣地,32 位元的 ODBC 管理員工具不會顯示系統使用 64 位元驅動程式的名稱 (dsn)。

使用者名稱 (dsn) 都儲存在下列登錄子機碼:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
登錄重新導向不會啟用這個登錄子機碼。因此,這兩個 ODBC 管理員工具會顯示所有的使用者名稱 (DSN)。

如需有關登錄重新導向的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/aa384232.aspx

屬性

文章編號: 942976 - 上次校閱: 2014年3月4日 - 版次: 6.0
這篇文章中的資訊適用於:
  • Microsoft Open Database Connectivity 4.21
關鍵字:?
kbexpertiseadvanced kbtshoot kbprb kbmt KB942976 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:942976
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com