AS400 / IBM i のデータをExcel、BI、Webアプリ、外部システムから使う時、ODBCやJDBC接続が候補になります。便利な一方で、接続ユーザー、ライブラリリスト、権限、文字コード、SQLの実行範囲を決めないまま進めると、本番データの誤更新や性能問題につながります。
この記事では、AS400へODBC/JDBC接続する前に確認することを、保守現場の目線で整理します。ACS(IBM i Access Client Solutions)、DB2 for i、SQL Services、データ抽出、Web/API連携を進める前のチェックリストです。
ODBC/JDBC接続で最初に決めること
- 参照だけにするのか、更新も許可するのか
- 接続ユーザーを個人にするのか、専用ユーザーにするのか
- ライブラリリストをどこで管理するのか
- 対象ファイル、ビュー、SQLを限定するのか
- ジョブログや監査ログで追える状態にするのか
ACSとドライバーの確認
PCから接続する場合は、IBM i Access Client Solutions、ODBCドライバー、JDBCドライバー、接続先ホスト名、ポート、サインオン情報を確認します。5250接続はできるのにSQL接続だけ失敗する場合、ポート、サービス、権限、SSL、ドライバーの設定が原因になることがあります。
ACSの基本は AS400のACS入門、接続切り分けは 5250・ACS接続トラブル確認 を確認してください。
ACSのJavaベース・パッケージと、WindowsのODBCドライバーを含むWindows Application Packageは別の構成要素です。ACSの画面が起動するだけでODBCも導入・更新済みとは判断しません。アプリが使うドライバー名と版、32/64ビット、DSN、接続先を記録し、JDBCは実際にアプリが読み込むドライバーを確認します。IBM公式のACS/ODBC構成説明も参照してください。
ライブラリリストと命名規則
ODBC/JDBCでは、SQLから見えるスキーマと、AS400のライブラリ運用を合わせて考えます。対話型ジョブで見えていたライブラリが、外部接続のジョブでは見えないことがあります。接続文字列、初期SQL、ジョブ記述、専用ユーザーのライブラリリストを確認します。
CPF4101やSQL7008が出る場合は、対象ファイルやメンバーだけでなく、外部接続時の実行環境を確認します。関連する確認は CPF4101の確認ポイント と SQL7008の確認ポイント にまとめています。
性能と本番影響を確認する
外部ツールから自由にSQLを投げられる状態にすると、全件検索、大量抽出、ロック、夜間バッチとの競合が起きることがあります。対象テーブル、抽出時間、WHERE条件、索引、実行ユーザー、タイムアウトを決めておきます。
大量抽出が目的なら AS400データ抽出ガイド、SQLの基本は IBM i SQL Services入門、外部連携全体は AS400のWeb化・API連携ガイド を先に確認してください。
ODBC/JDBC接続はQZDASOINITと権限をセットで見る
ODBC/JDBC接続でエラーになる時は、接続文字列だけでなく、QZDASOINITのジョブ、ユーザー権限、ライブラリリスト、SQLの対象ファイル、CCSID(文字コードを識別する番号)、ネットワークを合わせて確認します。接続ジョブの見方は本記事の「WRKACTJOBだけで判断しない」「調査メモに残すこと」の節、権限面は権限確認チェックリストへ進むと切り分けやすくなります。
ODBC/JDBCで出したCSVも文字コードを先に見る
ODBC/JDBC接続で抽出したCSVが文字化けして見える場合は、接続文字列やQZDASOINITだけでなく、PC上のファイル文字コードを先に確認します。UTF-8、UTF-8 BOM付き、Shift-JIS、Windows-31Jの違いで、Excelで開いた瞬間に文字化けして見えることがあります。
テキストエディタでは読めるがExcelで化ける場合は、Excelの開き方やCSVインポート手順を確認します。テキストエディタでも化ける場合は、ODBC/JDBCドライバー設定、接続ユーザー、ジョブCCSID、取得元データ、出力先の想定文字コードを分けて確認してください。接続ジョブ側は本記事の「WRKACTJOBだけで判断しない」「調査メモに残すこと」の節、文字化け全体は文字化け・CCSID確認へ進むと切り分けやすくなります。
WRKACTJOBだけで判断しない
QZDASOINITが動いているだけでは異常とは限りません。外部アプリ、帳票ツール、BI、ACSのSQL、データ転送が正しく使っている場合もあります。CPUが高い、長時間動いている、同じユーザーで大量に並ぶ、ジョブログにエラーが出る時に、接続元とSQLを確認します。
CPUやジョブ状態の見方は WRKACTJOBでCPUが高い時の確認を確認してください。
調査メモに残すこと
- QZDASOINITのジョブ名、ユーザー、ジョブ番号
- 接続元アプリ、端末、利用者
- 実行SQL、SQLCODE、SQLSTATE、ジョブログ
- 対象ライブラリ、ファイル、権限
- 停止や再接続をした場合の時刻と理由
QZDASOINITは、AS400と外部アプリをつなぐ調査の入口です。ジョブだけを見るのではなく、接続元、ユーザー、SQL、権限、ライブラリリストをセットで確認します。
PTF適用状況も確認する
ACS更新、外部接続、セキュリティ対応、障害調査では、DSPPTFやWRKPTFGRPでPTF適用状況も確認します。詳しくは AS400のバージョン・PTF・サポート確認手順 を見てください。
ジョブCCSIDの現在値と設定元を確認する
文字化けがジョブごとに違う時は、対象接続のサーバージョブを特定し、DSPJOB等でジョブCCSIDを確認します。CHGJOBは属性を変更するコマンドであり、参照専用の確認ではありません。原因と変換経路を確定し、検証・承認なしに変更しないでください。
ACSでは成功しアプリだけ失敗する接続例
Run SQL Scriptsでは接続できるのに業務アプリのODBC/JDBCだけ失敗する場合、ユーザー、ドライバー、接続文字列、サーバージョブの差を比較します。
| 確認点 | 確認内容 | 判断 |
|---|---|---|
| クライアント | ドライバー版、接続先名、ポート、TLS、タイムアウトを確認する | 別製品の成功だけで同じ経路と思い込まない |
| セッション | 実行ユーザー、既定ライブラリ、命名方法、接続プールを確認する | 対話ジョブのライブラリリストを前提にしない |
| サーバー | 対応するQZDASOINITなどのサーバージョブとジョブログを確認する | 対象時刻と利用者を合わせてエラーを特定する |
比較テストでは、同じユーザーと同じ短いSELECTから始め、条件を一つずつ変えます。パスワードや接続秘密値を調査資料やチャットへ貼り付けません。