コネクティビティー 補足
このセクションでは、
DB2 ユニバーサル・データベース (AS/400 版) と DB2 Common Server バージョン 2 または DB2 ユニバーサル・データベースとの間の SQL 操作に適用される、その他の考慮事項をいくつかリストします。以降の説明は DB2 (OS/2 版) に関するものですが、多くの場合、他のプラットフォーム上の DB2 Common Server バージョン 2 および DB2 ユニバーサル・データベースにも類似の考慮事項が適用されます。
- AS/400 では、表名は集合 (またはライブラリー名) により修飾され、
DB2 ユニバーサル・データベース (AS/400 版) データベース (AS/400 ごとに 1 つのデータベース) に保管されます。しかし、PC 上では、表はユーザー ID (表の作成者) により修飾され、特定のデータベース (DB2 (OS/2 版) の入った PC には複数のデータベースを置くことが可能) に保管されます。
- これは、照会される表の名前を集合名を指定せずに指定した場合、
DB2 (OS/2 版) から (DB2 コネクトを経由して) DB2 ユニバーサル・データベース (AS/400 版) への照会では、
(省略時の) 集合名として (AS/400 上の) ターゲット側のジョブのユーザー ID が使用されるということです。警告が出されるか、その表が見つからないかのいずれかになります。
- これはまた、DB2 ユニバーサル・データベース (AS/400 版) から DB2 (OS/2 版) への照会では、照会に識別子が ('識別子.表名' の形式で) 指定されていない場合、表識別子が暗黙指定されるということでもあります。
DB2 (OS/2 版) の表識別子 (AS/400 アプリケーション・リクエスターで集合またはライブラリーとして指定されている) の省略時値は、この照会を作成したユーザーのユーザー ID になります。この場合も、警告が出されるか、実行中の照会はその表を見つけられません。
- 共通ユーザー ID を使用して、
DB2 (OS/2 版) の OS/2 データベースおよび表を作成することができます。
DB2 (OS/2 版) では DB2 ユニバーサル・データベース (AS/400 版) にあるような物理集合はありませんが、表識別子があります。これは作成者のユーザー ID です。
- DB2 (OS/2 版) が DRDA プロトコルを使用するクライアントである場合、
DB2 コネクト (または DDCS) が必要です。
DB2 (OS/2 版) がサーバーとしてのみ使用されている場合、上記のものは必要ではありません。
- DB2 コネクトを正しく構成することは非常に重要です。
- DB2 (OS/2 版) および DB2 コネクトのレベルを必ず最新のものにします。入手可能な FixPak を適用してください (まだ行っていない場合)。
- このマニュアルのインストールおよび構成に関する指示に従ってください。
- APPC を使用している場合、
PC 用に作成された制御装置および装置を使用して通信を適切に構成するには特別の注意が必要です。このとき、
DB2 (OS/2 版) はアプリケーション・リクエスターまたはアプリケーション・サーバーとして使用されます。さらに、使用している通信プロトコルに関係なく、
AS/400 が接続する DB2 (OS/2 版) データベースごとに RDB ディレクトリーが必要になります。
APPC 通信を設定するには以下を行ってください。
- 装置および制御装置記述を自分で作成することができます。また、トークンリングがあって、かつ回線記述 AUTOCRTCLT パラメーターが *YES の場合、装置および制御装置記述をシステムに作成させることもできます。オプション 2「変更」を使用して、WRKLIND コマンドを使用し回線記述を調べます。パラメーター 'Autocreate controller' に行って、AUTOCRTCLT 値を調べてください。
ご使用のシステムが制御装置を自動作成する場合、必要な制御装置記述の作成を開始できます。
OS/2 のフォルダー CM/2 から、「通信の開始」でサブシステム管理を実行します。サブシステムから SNA サブシステムに対する詳細を調べます。そこで論理リンクを調べることができます。オープンし、目的のシステムへのリンクを活動化してそこで制御装置を自動作成します。そののち装置記述が自動作成されます。
- システム間のネットワーク接続が機能するには、
AS/400 の PC の装置と制御装置が ACTIVE である必要があります。制御装置記述で SWTDSC パラメーターを *NO に設定すれば、
ACTIVE 制御装置は ACTIVE のままです。また、ONLINE パラメーターを *YES に設定すれば、
IPL 時に制御装置は活動状態になります
(装置記述の ONLINE パラメーターは *YES に設定しなければならない場合もあります)。制御装置記述のパラメーターを変更するためには、そのパラメーターが VARIED OFF でなければならず、制御装置の所有者 (CTLOWN パラメーター) が *USER に設定される必要があります。
- AS/400 が接続する各 DB2 (OS/2 版) の RDB ディレクトリーに項目を追加する場合、
ADDRDBDIRE コマンドを使用します。
RDB 名は DB2 (OS/2 版) データベース名で、リモート・ロケーション名はそのワークステーションの名前です。
- DB2 (OS/2 版) が使用している AS/400 上のすべての表 (物理ファイル) に対して、正しい CCSID 値 (米国の顧客の場合、通常は 37) が必要です。
DSPFD を使用して CCSID 値を表示させ、
CHGPF を使用して物理ファイルの CCSID を変更することができます。さらに、正しく接続するために、ジョブの CCSID、使用しているユーザー・プロファイルの CCSID、またはシステム CCSID 値 (QCCSID) (省略時値の 65535 の場合) のうちのいずれかを変更する必要があるかもしれません。通常、この変更を行うための最適の場所は、サーバー・ジョブが実行されているユーザー・プロファイル内です。
- DB2 コネクトを使用して AS/400 と相互協調処理を行う前に、アプリケーション・プログラムおよび DB2 コネクト ユーティリティー用に SQL パッケージを作成する必要があります。
- DB2 PREP コマンドを使用して、組み込み SQL の付いたアプリケーション・プログラム・ソース・ファイルを処理します。この処理を行うことにより、SQL ステートメント用のホスト言語呼び出しを含む、変更されたソース・ファイルが作成され、省略時には、現在接続しているデータベースの SQL パッケージが作成されます。
- DB2 コネクト ユーティリティーを AS/400 DB2 サーバーにバインドするには以下のことを行ってください。
-
CONNECT TO rdbname
-
BIND path@DDCS400.LST BLOCKING ALL SQLERROR CONTINUE
MESSAGES DDCS400.MGS GRANT PUBLIC
path@DDCS400.LST の path を省略時のパス C:\SQLLIB\BND\ に置き換えるか、または省略時ロケーションにインストールしていない場合はご使用のローカル値と置き換えます。
注: | リストの 3 番目のファイル上の DB2 ユニバーサル・データベース (AS/400 版) データベースから SQL コード -901 を避けるために OS/400 V3R1 では PTF SF23624 が必要です。
|
-
CONNECT RESET
- DB2 ユニバーサル・データベース (AS/400 版) から DB2 (OS/2 版) への対話式 SQL
- セッション属性 NAMING(*SQL)、DATFMT(*ISO)、および TIMFMT(*ISO) を使用します。
*ISO 作業以外の他の形式 (ただしすべてではない)、および日付形式 (DATFMT) で使用される形式は、時刻形式 (TIMFMT) でも使用されなければなりません。
- AS/400 の COLLECTION と DB2 (OS/2 版) の表修飾子 (作成者のユーザー ID) との間の対応にご注意ください。
SQL 操作については、この考慮事項のリストの項目 1 を参照してください。
- 最初の対話式セッションで、コミットメント制御に必ず COMMIT(*CS) を指定しなければなりません。その後、(1) RELEASE ALL、(2) COMMIT、そして (3) CONNECT TO rdbname (特定のデータベースで 'rdbname' が置換される場所) を指定します。この時点で、
GRANT EXECUTE ON PACKAGE QSQL400.QSQL0200 TO PUBLIC (または特定のユーザー) を入力できます。これにより、他のユーザーも対話式 SQL 用に PC 上で作成された SQL PKG を使用することができます。
- DB2 (OS/2 版) にアクセスする AS/400 上に作成されたどのようなプログラムに関しても、以下の DB2 (OS/2 版) コマンドを使用することを忘れないでください。
-
GRANT ALL PRIVILEGES ON TABLE table-name TO user
-
GRANT EXECUTE ON PACKAGE package-name (usually the AS/400
program name) TO user
場合によっては、ユーザーに 'PUBLIC' を指定することがあります。
- V.2.1.1 以前の DB2 (OS/2 版) にアクセスする AS/400 アプリケーションの開発にあたっては、実際にはパッケージが作成されていないのに、
CRTSQLxxx コマンドに対する応答として、
SQL パッケージが PC で作成されたというメッセージ (SQL5057) が出されていました。これは DB2 (OS/2 版) の最新のレベルで修正されました。
さらに、DB2 (OS/2 版) のより以前のバージョンでは、ソース・メンバー記述のテキスト・フィールドに何か入っている OS/400 プログラムには、
SQL パッケージは作成されませんでした。
- DB2 (OS/2 版) の C 言語ストアード・プロシージャーは、パラメーターとして argc および argv は使用することができません (タイプを main() にできません)。これは AS/400 ストアード・プロシージャーとは異なります。この AS/400 ストアード・プロシージャーは argc および argv を使用しなければなりません。
DB2 (OS/2 版) ストアード・プロシージャーに関しては、
\SQLLIB\SAMPLES サブディレクトリーの例を参照してください。
C サブディレクトリーの OUTSRV.SQC および OUTCLI.SQC を探してください。
- DB2 (OS/2 版) のストアード・プロシージャー (AS/400 で呼び出される) では、プロシージャー名には大文字を使用してください。現在の AS/400 ではプロシージャー名は大文字に変換されます。しかし、これは、PC 上のプロシージャーが小文字で同じプロシージャー名を持っている場合、検出されないということです。
AS/400 のストアード・プロシージャーには、必ず大文字を使用してください。
- また、組み込み SQL に適切な PTF を適用していない場合、
AS/400 から DB2 (OS/2 版) への CALL ステートメントは、プロシージャー名をホスト変数 (CALL :host-procedure-name(...)) に書き込んだ場合にのみ、実行されます。これを修正する V3R7 の PTF は SF35932 で、
V3R2 の PTF は SF36535 です。
- ストアード・プロシージャーは、呼び出し側のプログラムと同じ活動化グループで実行するように作成された場合 (作成の正しい方法)、
COMMIT を含むことができません。しかし、DB2 (OS/2 版) では、ストアード・プロシージャーは COMMIT を含むことができます。しかしアプリケーションの設計者は、
DB2 ユニバーサル・データベース (AS/400 版) の側にコミットが生じるという知識がないことを承知しなければなりません。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]