ER/Studio 16.0 (2016) で IBM DB2 LUW に接続してリバースエンジニアリングするための環境を作る
ER/Studio はデータベースのモデリングツールであり、ER/Studio 上で論理モデルを編集した上で個別のデータベース向けの物理モデルを生成できるだけでなく、稼働中のデータベースに接続して物理モデルをリバース・エンジニアリングできるなど、なかなか便利なツールなのですが、DB2 LUW (Linux, Unix, Windows 向けのDB2) に接続しようとしたときに設定手順の文書が微妙に足りないので、手順のメモを残しておきます。
また、ER/Studio のバージョンは 16.0 (2016)、エディションは Developer Edition (RAD Studio Architect に含まれるエディション) を想定しています。
従って、ここで書いている手順は DB2 for z/OS (AS/400) 向けの手順ではありません。DB2 for z/OS へのネイティブ接続は ER/Studio Data Architect 以上でサポートされますので、RAD Studio Architect で ER/Stuido Developer Edition をインストールしても利用できません。(ODBC設定なら使えるかもしれませんが)
そもそもなぜ上手くいかないのか?
DB2に関する理解度が低い方が docwiki.embarcadero.com の記述を読むと、たぶん混乱するからだと思います。
ここらへんを見ると "IBM DB/2 OS/390 / IBM DB2 LUW" 向けの接続には "IBM DB2 Connect" が必要、と書かれています。 サポート対象データベース プラットフォーム - ER/Studio Data Architect
また、ここらへんを見ると "IBM DB2 クライアント ユーティリティの対応バージョン" を用いる旨、書かれています。 さらに IBM DB2 for LUW には "ODBC データ ソース アドミニストレータで指定した ODBC データ ソースを使用します。" と書かれています。 データベースに対するネイティブ接続または直接接続の使用 - ER/Studio Data Architect
結局、何が必要なのか、良く分からなくなってきませんか?
ネイティブ接続できるはずなのに、ODBCデータソースの設定が必要、みたいなことが書いてあるし。
では、と思って DB2 向けの ODBC ドライバだけインストールした環境で接続を試みてみても、ネイティブ接続は思ったようには動いてくれない。
db2abind64.dll が無い、みたいなメッセージが出て先に進めないし、db2abind64.dll で検索しても、そのものズバリの情報がイマイチ見当たらず、「後方互換性のために残されている」的な情報は見つかるものの、ODBCドライバにはこのDLLは含まれていないのです。
必要なもの
結局、ソフトウェアやドライバとして何が必要かというと、IBM Data Server Client Packages が必要です。この記事の作成時点では 11.1.* を使用していますが、もっと新しいバージョンが無いかどうかは個別に確認してください。
以下のリンクは11.1のダウンロードリンクです。IBM ID でのログインが必要なので、持っていない方は作成してください。
ここで "v11.1.3fp3_ntx64_client.exe (691.37 MB)" という、一番大きいインストーラを入手しておきます。(他のインストーラでも良いかもしれないけど、最小構成については検証していません)
インストールのサマリ
v11.1.3fp3_ntx64_client.exe は WinZip の自己展開型アーカイブなので、実行して展開された中身の setup.exe を実行します。(しかし、今の時代に自己展開型アーカイブで配布するのはアリなのだろうか?)
インストール構成としては、下記2点くらいが注意点でしょうか。
- IBM Data Server Client バージョン 11.1.3.3
- コンパクト構成 (200 - 300MB)
環境設定のサマリ
環境設定では、ODBC接続設定が必要です。ER/StudioからのDB2接続では、ODBCの機能とネイティブドライバの機能を併用するのですが、基本的な接続はODBCで設定された内容を参照しているようです。
ここらへんは RAD Studio/Delphi/C++Builder のデータベース接続機能である FireDAC の DB2 コネクタでも同じような挙動のようです。
ここでは DB2 側で接続エイリアスを作成したのち、それを ODBC ドライバで使用するように設定しています。
db2 catalog tcpip node [ノード名] remote [DB2サーバのホスト名またはIPアドレス] server [ポート番号(50000)] db2 catalog database [データベース名] as [DB接続エイリアス名] at node [ノード名]
ER/Studio のリバースエンジニアリング設定
おおむね、こんな流れでER/StudioからDB2 LUWへの接続やデータベースのリバースエンジニアリングが行えるようになります。