2013/01/30

64bit版WindowsにおけるODBC設定

この記事の内容

ODBC設定画面を呼び出す場合の注意点を記述しています。
特にWindows7 と Windows8においての操作について触れています。
WindowsServer2008R2についてはほとんどWindows7と同等です。

OracleのODBCドライバをインストールしようとして少しはまったので調べてみました。

※なお、この記事の内容はすべて64bit版のWindowsの説明になります。
32bit版のWindowsとは全く違う内容になりますのでご注意ください。




前置き

管理ツールから呼び出せるODBCの設定画面は正式には「ODBC データソース アドミニストレーター」という名前がついています。
長いですが、この記事ではできる限り正確を期すためにすべて正式名で統一します。

まず先にお伝えしておきたいのは以下の2点です。
  • 「ODBC データソース アドミニストレーター」には、32bit用と64bit用がある
  • 32bit用「ODBC データソース アドミニストレーター」は少し掘らないと出てこない(Windows7)

このあとそれぞれの詳細を紹介してゆくのですが、この2行をお伝えできれば正直もうこの記事の目的は9割くらい果たしているのでこの先は暇がなかったら読まなくてもいいです。


32bit用と64bit用

ほかのドライバやアプリケーション同様にODBCドライバには32bitで動作するものと64bitで動作するものがあります。32bitで動作するアプリケーションからODBCドライバを使う場合に、32bitのODBCドライバが必要になるのです。
(常にかどうかはわかりませんが、ほとんど場合そうであろうと推測しています。)
ちなみに、Microsoft Office 2010をインストールすると、デフォルトでは32bit版がインストールされます。
MS社曰く、「それまで使っていたプラグインとの互換性を維持するため。」だそうです。
例えばAccessからリンクテーブル的なことをする際に、どちらのODBCドライバが必要になるかはそういうところに影響されるのです。

64bit版のWindowsには「ODBC データソース アドミニストレーター」に32bit用と64bit用の2つがあって、
32bit用「ODBC データソース アドミニストレーター」では32bitのODBCドライバ、
64bit用「ODBC データソース アドミニストレーター」では64bitのODBCドライバの管理をするという仕組みになっているのです。

そしてこの2つのユーティリティは(Windows7では)画面構成から各部名称まですべて同じなので、今どちらを開いているのかを判断するのが難しいです。
ただ、見えてくるドライバは「それぞれのものだけ」なのでここで差は出てきます。

注意:このあと、ユーティリティを起動して比べる説明がありますが、2つを同時に起動することはできません。たとえば64bit用が起動している状態で32bit用を起動しようとしても、すでに起動している64bit用がアクティブになるだけです。

この2つのユーティリティをそれぞれ起動して「ドライバー」タブを開いてみたのが以下の画像です。
64bit用


32bit用


デフォルトでは64bitのODBCドライバがほとんどインストールされていないのがわかります。
ちなみに「Oracle in instantclient_11_2」というのは私がインストールしたもので、デフォルトでは「SQL Server」のドライバしか入っていません。

ただ、「差がある」と言ってももともと「64bitのドライバはデフォルト少ない」ってことを知らなければ区別はできず、UIとしては残念であることには変わりありません。

これがWindows8になるとわかりやすい差が出てきます。
同じようにそれぞれを起動して「ドライバー」タブを開いてみた画像です。

64bit用


32bit用


そう、タイトルバーに「32ビット/64ビット」が明示されているのです。
推測するに、不満/改善要望も相当あがっていたのではないでしょうか。


実行ファイルの実体

さて、違うものだということがお分かりいただいたら、次はそれぞれの起動方法についてですが、さらに事態をややこしくしてくれるのはこの2つのユーティリティの実行ファイルに「odbcad32.exe」という同じ名前がついていることです。
(ただ、まぁ、これはこのユーティリティに限った話ではないのですよね。)

ファイル名が同じということはつまり別のディレクトリにあるということです。
具体的に言うと以下の通りです。
64bit用
%windir%\system32\odbcad32.exe
32bit用
%windir%\SysWOW64\odbcad32.exe

(「%windir%」はほとんどの場合[C:\WINDOWS]です。)
「この記述逆じゃない?」って思われる方ももしかしたらいらっしゃるかもしれませんが、間違っていません。
SysWOW64というフォルダは32bitアプリケーションが保存/動作するディレクトリなのですが詳細まで書くと終わらなくなるので参考記事のURLだけ貼っておきます。
(参考) @IT[解説]64bit Windows時代到来 第2回 Win32アプリケーションを実行するWOW64
(2011/04/04更新の記事)

大事なことは「system32」にあるのが64bit用で、「SysWOW64」にあるのが32bit用だということです。
大事なことは「system32」にあるのが64bit用で、「SysWOW64」にあるのが32bit用だということです。



さて実行ファイルの場所がわかったところで、通常時にUIからどうやって呼び出すのでしょうか。

呼び出す方法 - 1 - キーワードで検索

私の場合、コントロールパネルとか管理ツールとかを探すのが面倒なので「プログラムとファイルの検索」でキーワードを入れて検索する習慣がありました。
Vista/7になってマイネットワークがなくなってワタワタしたんですが、「プログラムとファイルの検索」で「IPアドレス」で検索したらそれっぽいユーティリティがずらっと出てきてくれて、「あ、これ便利」って思ったものです。(なんか騙されてる)

Windows7で「odbc」で検索した結果


Windows8で「odbc」で「設定」を検索した結果


ここに表れているODBCデータソースはすべて64bit用へのリンクです。
これでは32bit用へはたどり着けません。


呼び出す方法 - 2 - 実行ファイルで検索

では実行ファイル名「odbcad32.exe」で(.exeは省略して)検索してみましょう。
WindowsXPのころは「ファイル名を指定して実行」でこれを呼び出している人も多かったのではないでしょうか。

Windows7で「odbcad32」で検索した結果


Windows8で「odbcad32」で「アプリ」を検索した結果

(「設定」では検索にヒットしません)

ここに表れているodbcad32.exeもすべて64bit用へのリンクです。
これでは32bit用へはたどり着けません。
実行ファイル名での検索は、Pathが通っているディレクトリの検索でヒットしてると思われます。
そしてご想像の通り、[%windir%\SysWOW64]にはPathが通っていません。


呼び出す方法 - 3 - 管理ツール

そしたら初心に帰って「管理ツール」です。

Windows7の管理ツール


Windows8の管理ツール



Windows7の方は例によって64bit版へのリンクしかありません。
です、Windows8の方はそれぞれへのショートカットが置かれています!よかったよかった。
これもきっと改善の結果なのでしょう。


というわけで、私は残念ながらWindows7で簡単に32bit用の「ODBC データソース アドミニストレーター」にたどり着く方法は見つけられませんでした。
ここに書いていないショートカットがあれば教えてください。


結論

Windows7 64bit版で32bitのODBCドライバの管理を行うためには
[%windir%\SysWOW64\odbcad32]を開いてください。


Windows7 64bit版の管理ツールにWindows8同様のショートカットを配置する方法(2014/04/14追記)

別エントリで書きました。
参考にしていただければ幸いです。
[Windows7] 32bitと64bitのODBCアドミニストレーターへのショートカットを管理ツールに配置する方法


.

5 件のコメント:

  1. 非常に分かりやすく面白い内容でした。
    おかげで問題が解決しました。
    ありがとうございました。

    返信削除
    返信
    1. コメントありがとうございます。
      お役に立てて光栄です。

      削除
  2. 非常に分かりやすい文章ですね。
    ありがとうございました。

    返信削除
    返信
    1. コメントありがとうございます。
      お役に立てたのなら光栄です。

      削除
  3. 頭の中が、整理できて助かりました。
    自力で対応していたときは、大混乱していました。

    返信削除