次の方法で共有


ODBC 管理者ツールでは、64 ビット バージョンの Windows で 32 ビットと 64 ビットの両方のユーザー DSN が表示されます

この記事では、ODBC データ ソースアドミニストレーター ツールで発生する問題の回避策について説明します。

元の製品バージョン: SQL Server
元の KB 番号: 942976

現象

64 ビット バージョンの Microsoft Windows オペレーティング システムには、ODBC データ ソース管理者ツール (Odbcad32.exe) の次のバージョンが含まれています。

  • Odbcad32.exe ファイルの 32 ビット バージョンは、%systemdrive%\Windows\SysWoW64 フォルダーにあります。
  • Odbcad32.exe ファイルの 64 ビット バージョンは、%systemdrive%\Windows\System32 フォルダーにあります。

Odbcad32.exe ファイルには、次の種類のデータ ソース名 (DSN) が表示されます。

  • システム DSN
  • ユーザー DSN

症状 1

32 ビット バージョンの ODBC Administrator ツールには、32 ビット システム DSN、32 ビット ユーザー DSN、および 64 ビット ユーザー DSN が表示されます。 64 ビット バージョンの ODBC Administrator ツールには、64 ビット システム DSN、32 ビット ユーザー DSN、および 64 ビット ユーザー DSN が表示されます。

現象 2

SQLDataSources関数は、アプリケーションのアーキテクチャに関係なく、すべてのバージョンのユーザー DSN を返します。 32 ビット アプリケーションで呼び出される SQLDataSources 関数は、32 ビット ドライバーのシステム DSN のみを返しますが、32 ビット ドライバーと 64 ビット ドライバーの両方のユーザー DSN を返します。 同様に、64 ビット アプリケーションで呼び出される SQLDataSources 関数は、64 ビット ドライバーのシステム DSN のみを返しますが、32 ビット ドライバーと 64 ビット ドライバーの両方のユーザー DSN を返します。 そのため、 SQLDataSources 関数から返されたユーザー DSN を使用してアプリケーションが接続を確立すると、次のエラー メッセージが表示されることがあります。

データ ソース名が見つからず、既定のドライバーが指定されていません

たとえば、次のようなシナリオがあるとします。 32 ビット ドライバー 'Microsoft Access Driver (*.mdb)' のユーザー DSN を作成します。 このドライバーには、対応する 64 ビット バージョンはありません。 64 ビット アプリケーションで呼び出される SQLDataSources 関数は、この 32 ビット ユーザー DSN を返します。 ただし、この 32 ビット ユーザー DSN 経由で接続すると、このセクションで前述したエラー メッセージが表示されます。

原因

ユーザー DSN は、次のレジストリ サブキーの下に格納されます。

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

このレジストリ サブキーに対してレジストリ リダイレクトが有効になっていません。 そのため、ユーザー DSN は、ODBC アドミニストレーター ツールの 32 ビットバージョンと 64 ビット バージョンの両方で表示されます。

解決方法

下位互換性を維持するために、この問題の解決策は現在使用できません。

回避策

この問題を回避するには、適切なバージョンの ODBC Administrator ツールを使用します。 64 ビット オペレーティング システムで 32 ビット アプリケーションとしてアプリケーションをビルドして実行する場合は、 %windir%\SysWOW64\odbcad32.exe ODBC 管理者ツールを使用して ODBC データ ソースを作成する必要があります。 DSN の種類を示すには、32 ビット ユーザー DSN に '_32' を追加し、64 ビット ユーザー DSN に '_64' を追加します。

詳細

64 ビット ODBC アドミニストレーター ツールをコントロール パネルから呼び出して、64 ビット プロセスで使用されるユーザー DSN とシステム DSN を管理できます。 64 ビット オペレーティング システムでは、Windows on Windows 64 (WOW64) プロセスで 32 ビット ODBC 管理者ツールが使用されます。 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 が表示されます。

レジストリ リダイレクトの詳細については、「 Registry Redirector」を参照してください。