HCOSS DSNTEP2 ユーティリティは、DB2 DSNTEP2 に相当します。データベース接続が確立されている場合、これを使用して JCL に埋め込まれた動的 SQL 文が実行されます。データベース移行プロセスでは、これを使用して SQL Server に対して DDL を実行し、スキーマ・オブジェクトを作成および変更します。
DSNTEP2 を使用するには、JCL アプリケーション・プロジェクトを作成するか、またはエンタープライズ・サーバの JES CONTROL 機能を使用して、直接 JCL をサブミットします。JCL 構文は、DB2 互換である必要があります。
SQL 文には、SQL Server 方言ではなく DB2 方言を使用します。DSNTEP2 プログラムは、SQL 文を SQL Server に送信して実行する前に、ESQL ランタイムを呼び出して方言の変換を処理します。SQL 文に SQL Server 固有の構文が含まれる場合は、エラーが発生します。例えば、SQL Server 方言では NULL 可能カラムのカラム定義に明示的な NULL を使用できますが、DB2 方言では NULL はサポートされていません。
次に、CREATE TABLE 文の JCL の例を示します。
//DDLJOB2 JOB //RESETDB EXEC PGM=IKJEFT01 //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSPUNCH DD SYSOUT=* //SYSREC00 DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(HCOD) RUN PROGRAM(HCOTEP2) END /* //SYSIN DD * CREATE TABLE HCOSQL.EMP ( EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL, LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3), PHONENO CHAR(4), HIREDATE DATE, JOB CHAR(8), EDLEVEL SMALLINT, SEX CHAR(1), BIRTHDATE DATE, SALARY DECIMAL(9,2), BONUS DECIMAL(9,2), COMM DECIMAL(9,2), PRIMARY KEY (EMPNO) ) IN XDBIBMDB.XDBIBMTS; /* //
ここで、HCOD は DSN 名、HCOTEP2 は DSNTEP2 プログラム名、セミコロン (;) は SQL ターミネータです。
DB2 データ型と SQL Server データ型には、一部違いがあります。DSNTEP2 ユーティリティは、次のデータ・タイプ・マッピングを使用します。
DB2 データ型 | SQL Server データ型 |
---|---|
INTEGER | INTEGER |
BIGINT | BIGINT |
SMALLINT | SMALLINT |
DOUBLE | FLOAT(53) |
FLOAT(n) | FLOAT(n) |
REAL | REAL |
DECIMAL(p,s) | DECIMAL(p,s) |
CHAR | CHAR |
VARCHAR(n) n <= 8000 | VARCHAR(n) |
VARCHAR(n) n > 8000 | VARCHAR(max) |
GRAPHIC | NCHAR |
VARGRAPHIC | NVARCHAR |
DATE | DATE |
TIME | TIME(0) |
TIMESTAMP | DATETIME2(6) |
BINARY* | BINARY |
CHAR FOR BIT DATA* | BINARY |
BLOB* | VARBINARY(max) |
CLOB* | NVARCHAR(max) |
XML* | XML |
* HCOSS DSNUTILB ユーティリティではサポートされていません。 |