2014年7月29日火曜日

64ビットWindowsには、なぜ32ビットと64ビットのODBCが存在するのか?



こんにちは。近藤です。


今回から担当いたします。よろしくお願いします。
主に、「データ」をやりとりする際に必要な「環境・設定」まわりの話をしていこうと思います。

Windows XPのサポートが2014/04/08(米国時間)に終了したことを受け、利用するWindows OS(以下、Windows)が変わったかたも多いのではないでしょうか?

クライアントで使用するWindowsは、Windows Vistaあたりまでは、互換性が懸念されたり、64ビット版は各種ドライバが揃っていなかったり、といったことがあり、32ビット版が多く利用されてきました。これが、Windows7以降になると、64ビット版が利用されることがほとんどになっているように感じます(最近の製品出荷や製品サポート時の環境から)。
これは、
  • プリインストールされているWindowsが64ビットだった
  • 64ビット版のWindowsでも32ビットのアプリケーションが問題なく利用できることがわかってきた
  • 各種ドライバも64ビット版が揃ってきた
  • 4GB以上実装したメモリの恩恵を受けられる
など、わざわざ32ビット版のWindowsを選択する必要が無くなったからでしょう。
(ちなみに、2014/07現在数多く販売されている軽量小型のWindows8/8.1タブレットPCは、省電力型の32ビットCPU(ATOMプロセッサ(Bay Trail-T))が搭載されているので、32ビット版のWindows8/8.1が採用されています。)
(2014/07/31 訂正:Bay Trail-Tは64ビットCPUで、軽量小型タプレットが 32ビットOSを採用していたことは別の理由によるものでした。訂正し、お詫びいたします)

さて、この64ビット版Windows、64ビットアプリケーションも32ビットアプリケーションも利用できるのですが、困ったことに
  • 64ビットアプリケーションが使用できるDLLは64ビット
  • 32ビットアプリケーションが使用できるDLLは32ビット
と限定されています。
データベースに接続するときに使用する「ODBCドライバ」もまた然りなのです。

64ビット版のWindowsでは、
  • (64ビットのプログラムが使用する)64ビット版ODBC
  • (32ビットのプログラムが使用する)32ビット版ODBC
の2種類を、利用するアプリケーションにあわせて設定します。
64ビット版ODBCは、
[管理ツール]-[データソース(ODBC)]
で設定するのですが、32ビットのODBCを設定する場合は、面倒なことに、
<Windowsインストールフォルダ>\SysWOW64\odbcad32.exe
を直接実行する必要があります。
(Windows 8/Windows Server 2012からは、[管理ツール]に配置されるようになりました。)

こんな設定しづらい方法しか用意されていないので、それほど利用する機会はないのでは?と思いきや、利用するアプリケーションが32ビットの場合には、この面倒な設定をしなければなりません。
また、設定が面倒なだけでなく、データベースによっては、32ビット版と64ビット版のODBCドライバを共存させることができないものもあったりします。
どんなときに共存させる必要があるのかというと、
  • データベースに接続するアプリケーションを複数種類使用していて、64ビットアプリケーションと32ビットアプリケーションが混在している
  • データベースに接続するアプリケーションが、実行モジュールは64ビットでGUIは32ビット
という場合などです。
弊社のETLツールWaha! Transformerの64ビット版は、実行モジュール・GUI共に64ビットで動作するので、今回のように32ビット/64ビット双方の設定を作成する必要はないのですが、実行モジュールとGUIで異なるビット数のアプリケーション、結構あります。

共存できない例として最も身近なのは、Microsoft Officeにもバンドルされ(最近のバージョンではバンドルされているエディションが少なくなりましたが)、簡単に使用することのできるMicrosoft Accessだと思います。
インストーラを実行すると、



「32ビット版と64ビット版はどちらか一方しかインストールできません」という内容のメッセージが記載されたダイアログが表示されてしまいます。
では、Microsoft Accessの32ビット版と64ビット版のODBCドライバを絶対に共存させることはできないか?というと、非公式ですが共存させる方法があります。

ということで、次の担当回では、【64ビット版Windows環境に、32ビット版/64ビット版双方のMicrosoft Access ODBCドライバを共存させる方法】について記載します。

ではまた。


追伸:
クライアントにWindows8/8.1を利用している企業は少ないと感じています。スタートメニューがないので、アプリケーションを実行するには、スタート画面を上にスライドさせて、アプリ選択画面を表示させて、2次元に広がったショートカットから目的のものを探して…と、マウスの移動量が多いです。
一方、サーバOSであるWindows Server 2012/2012 R2は、増えてきていることを感じますね。

0 件のコメント:

コメントを投稿