現在オフラインです。再接続するためにインターネットの接続を待っています

64 ビット版の Windows で、ODBC アドミニストレーター ツールが 32 ビットと 64 ビット両方のユーザー DSN を表示する

現象
64 ビット版の Microsoft Windows オペレーティング システムには、以下のバージョンの Microsoft ODBC (Open Database Connectivity) データ ソース アドミニストレーター ツール (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 のみが返されますが、ユーザー DSN については 32 ビット ドライバーと 64 ビット ドライバーの両方が返されます。同様に、64 ビット アプリケーションで呼び出される SQLDataSources 関数では、64 ビット ドライバーのシステム DSN のみが返されますが、ユーザー DSN については 32 ビット ドライバーと 64 ビット ドライバーの両方が返されます。そのため、SQLDataSources 関数から返されるユーザー DSN を使用してアプリケーションが接続を行う場合、次のエラー メッセージが表示されることがあります。
データ ソース名および指定された既定のドライバーが見つかりません
たとえば、次のような状況で問題が発生します。32 ビット ドライバー "Microsoft Access ドライバー (*.mdb)" 用のユーザー DSN を作成します。このドライバーには、対応する 64 ビット バージョンがありません。64 ビット アプリケーションで呼び出される SQLDataSources 関数は、この 32 ビットのユーザー DSN を返します。ただし、この 32 ビットのユーザー DSN を介して接続を行うと、このセクションの上記のエラー メッセージが表示されます。
原因
ユーザー DSN は、次のレジストリ サブキーの下に保存されています。
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
このレジストリ サブキーに関して、レジストリのリダイレクトは有効ではありません。そのため、ユーザー DSN は 32 ビット版と 64 ビット版両方の ODBC アドミニストレーター ツールで表示されます。
解決方法
下位互換性を維持するため、現時点でこの問題に対する解決策はありません。
回避策
この問題を回避するには、適切なバージョンの ODBC アドミニストレーター ツールを使用します。64 ビット オペレーティング システム上でアプリケーションを 32 ビット アプリケーションとしてビルドしてから実行する場合は、%windir%\SysWOW64\odbcad32.exe で ODBC アドミニストレーター ツールを使用して ODBC データ ソースを作成する必要があります。DSN の種類を示すには、32 ビット ユーザーの DSN には "_32" を追加し、64 ビット ユーザーの DSN には "_64" を追加する方法があります。
詳細
コントロール パネルから 64 ビットの ODBC アドミニストレーター ツールを起動して、64 ビット プロセスにより使用されているユーザー DSN とシステム DSN を管理することができます。64 ビット オペレーティング システムでは、32 ビットの ODBC アドミニストレーター ツールは Windows on Windows 64 (WOW64) プロセスに使用します。SysWoW64 フォルダーから、32 ビットの ODBC アドミニストレーター ツールを直接起動する必要があります。32 ビットの ODBC アドミニストレーター ツールを使用すると、WOW64 プロセスにより使用されているユーザー DSN とシステム DSN を管理することができます。

システム DSN は、以下のレジストリ サブキーに保存されています。
HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI
このレジストリ サブキーには、レジストリのリダイレクトが有効です。そのため、32 ビット ドライバーのシステム DSN と 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 が表示されます。

レジストリのリダイレクトの詳細については、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。
プロパティ

文書番号:942976 - 最終更新日: 08/30/2013 13:54:00 - リビジョン: 10.0

Microsoft Open Database Connectivity 4.21

  • kbexpertiseadvanced kbtshoot kbprb KB942976
フィードバック