Db2 スキーマの変換 (Db2ToSQL)

Db2 と SQL Server の両方に接続し、プロジェクトおよびデータ・マッピング・オプションを設定した後、Db2 データベース・オブジェクトを SQL Server データベース・オブジェクトに変換できます。

変換プロセス

データベース オブジェクトの変換は、Db2 からオブジェクト定義を取得し、それらを同様の SQL Server オブジェクトに変換してから、この情報を SQL Server Migration Assistant (SSMA) メタデータに読み込みます。 その情報は、SQL Server のインスタンスには読み込まれません。 その後、SQL Server メタデータ エクスプローラーを使用して、オブジェクトとそのプロパティを表示できます。

変換中に SSMA によって、出力メッセージが出力ペインに、エラー メッセージが [エラー一覧] ペインに出力されます。 出力情報とエラー情報を使用して、目的の変換結果を得るために Db2 データベースまたは変換プロセスを変更する必要があるかどうかを判別します。

変換オプションの設定

オブジェクトを変換する前に、[プロジェクト設定] ダイアログ ボックスのプロジェクト変換オプションを確認します。 SSMA が関数とグローバル変数を変換する方法を設定するには、このダイアログ ボックスを使用します。 詳細については、「プロジェクト設定 (変換)」を参照してください。

変換結果

次の表は、変換される Db2 オブジェクトと、結果の SQL Server オブジェクトを示しています。

Db2 オブジェクト 結果の SQL Server オブジェクト
データ型 SSMA は、次の型を除くすべての型をマップします。

CLOB: この型で動作する一部のネイティブ関数はサポートされていません (例: CLOB_EMPTY())

BLOB: この型を操作するための一部のネイティブ関数はサポートされていません (例: BLOB_EMPTY())

DBLOB: この型を操作するための一部のネイティブ関数はサポートされていません (例: DBLOB_EMPTY())
ユーザー定義データ型 SSMA は、次のユーザー定義オブジェクトをマップします。

- Distinct 型
- 構造化型
- SQL PL データ型

注: 弱いカーソルの種類はサポートされていません。
特殊レジスタ SSMA では、次のレジスタのみがマップされます。

CURRENT TIMESTAMP
CURRENT DATE
CURRENT TIME
CURRENT TIMEZONE
CURRENT USER
SESSION_USER および USER
SYSTEM_USER
CURRENT CLIENT_APPLNAME
CURRENT CLIENT_WRKSTNNAME
CURRENT LOCK TIMEOUT
CURRENT SCHEMA
CURRENT SERVER
CURRENT ISOLATION

その他の特殊なレジスタは、SQL Server セマンティクスにマップされません。
CREATE TABLE SSMA は、次の例外を除いてマップ CREATE TABLE します。

多次元クラスタリング (MDC) テーブル
範囲クラスター化テーブル (RCT)
パーティション テーブル
デタッチ済みテーブル
DATA CAPTURE clause
IMPLICITLY HIDDEN オプション
VOLATILE オプション
CREATE VIEW SSMA は SQL CREATE VIEW Server セマンティクスにマップされませんが、他のオプションと共 WITH LOCAL CHECK OPTION にマップされます
CREATE INDEX SSMA は、次の例外を除いてマップ CREATE INDEX します。

XML インデックス
BUSINESS_TIME WITHOUT OVERLAPS オプション
PARTITIONED clause
SPECIFICATION ONLY オプション
EXTEND USING オプション
MINPCTUSED オプション
PAGE SPLIT オプション
トリガー SSMA は、次のトリガー セマンティクスをマップします。

AFTER / FOR EACH ROW トリガー

AFTER / FOR EACH STATEMENT トリガー

BEFORE / FOR EACH ROWトリガー INSTEAD OF / FOR EACH ROW
シーケンス マップ。
SELECT 明細書 SSMA は、次の例外を除いてマップ SELECT します。

data-change-table-reference 句 - 部分的にマップされますが FINAL 、テーブルはサポートされていません

table-reference 句 - 部分的にマップされますが、only-table-reference、outer-table-reference、analyze-table-expression、collection-derived-table、xmltable-expression は SQL Server セマンティクスにマップされません

period-specification 句 - マップされていません。

Continue-handler クローズ - マップされていません。

型指定された相関句クローズ - マップされていません。

Concurrent-access-resolution クローズ - マップされていません。
VALUES 明細書 マップ。
INSERT 明細書 マップ。
UPDATE 明細書 SSMA は、次の例外を除いてマップ UPDATE します。

テーブル参照句 - only-table-reference は SQL Server セマンティクスにマップされません

Period 句 - マップされていません。
MERGE 明細書 SSMA は、次の例外を除いてマップ MERGE します。

各句の 1 回の出現と複数回の出現 - 各句の限定的な出現に対する SQL Server セマンティクスにマップ

SIGNAL 句 - SQL Server セマンティクスにマップされません

混合 UPDATE 句と DELETE 句 - SQL Server セマンティクスにマップされない

Period クローズ - SQL Server セマンティクスにマップされません
DELETE 明細書 SSMA は、次の例外を除いてマップ DELETE します。

テーブル参照句 - only-table-reference は SQL Server セマンティクスにマップされません

Period 句 - SQL Server セマンティクスにマップされない
分離レベルとロックの種類 マップ。
プロシージャ(SQL) マップ。
プロシージャ (外部) 必要な手動更新
プロシージャ (ソース) SQL Server セマンティクスにマップしないでください。
代入ステートメント マップ。
CALL プロシージャのステートメント マップ。
CASE 明細書 マップ。
FOR 明細書 マップ。
GOTO 明細書 マップ。
IF 明細書 マップ。
ITERATE 明細書 マップ。
LEAVE 明細書 マップ。
LOOP 明細書 マップ。
REPEAT 明細書 マップ。
RESIGNAL 明細書 条件はサポートされていません。 メッセージは任意です。
RETURN 明細書 マップ。
SIGNAL 明細書 条件はサポートされていません。 メッセージは任意です。
WHILE 明細書 マップ。
GET DIAGNOSTICS 明細書 SSMA は、次の例外を除いてマップ GET DIAGNOSTICS します。

ROW_COUNT -マップ。

Db2_RETURN_STATUS -マップ。

MESSAGE_TEXT -マップ。

Db2_SQL_NESTING_LEVEL - SQL Server セマンティクスにマップされない

Db2_TOKEN_STRING - SQL Server セマンティクスにマップされない
カーソル SSMA は、次の例外を除いてカーソルをマップします。

ALLOCATE CURSOR ステートメント - SQL Server セマンティクスにマップされません

ASSOCIATE LOCATORS ステートメント - SQL Server セマンティクスにマップされません

DECLARE CURSOR ステートメント - Returnability 句が SQL Server セマンティクスにマップされていない

FETCH ステートメント - 部分マッピング。 ターゲットとしての変数のみがサポートされています。 SQLDA DESCRIPTOR が SQL Server セマンティクスにマップされていない
変数 マップ。
例外、ハンドラー、および条件 SSMA は、例外処理を次の例外とマップします。

EXIT handlers - Mapped。

UNDO handlers - Mapped。

CONTINUE handlers - マップされていません。

条件 - SQL Server セマンティクスにはマップされません。
動的 SQL マッピングされていません
エイリアス マップ。
ニックネーム 部分的なマッピング。 基礎となるオブジェクトには手動処理が必要です
Synonyms マップ。
Db2 の標準関数 SSMA は、SQL Server で同等の関数を使用できる場合に、Db2 標準関数をマップします。
承認 マッピングされていません
述語 マップ。
SELECT INTO 明細書 マッピングされていません
VALUES INTO 明細書 マッピングされていません
トランザクション コントロール マッピングされていません

Db2 データベース オブジェクトの変換

Db2 データベース・オブジェクトを変換するには、最初に変換するオブジェクトを選択してから、SSMA で変換を実行します。 変換中に出力メッセージを表示するには、[出力の表示]>に移動します。

Db2 オブジェクトを SQL Server 構文に変換するには

  1. Db2 メタデータ・エクスプローラーで、Db2 サーバーを展開してから、「スキーマ」を展開します。

  2. 変換するオブジェクトを選択します。

    • すべてのスキーマを変換するには、[スキーマ] の横にあるチェック ボックスをオンにします。

    • データベースを変換または省略するには、スキーマ名の横にあるチェック ボックスをオンにします。

    • オブジェクトのカテゴリを変換または省略するには、スキーマを展開し、カテゴリの横にあるチェック ボックスをオンまたはオフにします。

    • 個々のオブジェクトを変換または省略するには、カテゴリ フォルダーを展開し、オブジェクトの横にあるチェック ボックスをオンまたはオフにします。

  3. 選択したすべてのオブジェクトを変換するには、[スキーマ] を右クリックし、[スキーマの変換] を選択します。

    オブジェクトまたはそのフォルダーを右クリックし、[スキーマの変換] を選択して、個々のオブジェクトまたはオブジェクトのカテゴリを変換することもできます。

変換の問題を表示する

一部の Db2 オブジェクトは変換されない場合があります。 コンバージョンの成功率を確認するには、サマリーコンバージョンレポートを表示します。

要約レポートを表示する

  1. Db2 メタデータ エクスプローラーで、[スキーマ] を選択 します

  2. 右側のペインで [レポート] タブを選択します。

    このレポートには、評価または変換されたすべてのデータベース オブジェクトの概要評価レポートが表示されます。 個々のオブジェクトの概要レポートを表示することもできます。

    • 個々のスキーマのレポートを表示するには、Db2 メタデータ エクスプローラーでスキーマを選択します。

    • 個々のオブジェクトのレポートを表示するには、Db2 メタデータ エクスプローラーでオブジェクトを選択します。 変換に問題があるオブジェクトには、赤いエラー アイコンがあります。

変換に失敗したオブジェクトの場合は、変換エラーの原因になった構文を表示できます。

個々の変換の問題を表示する

  1. Db2 メタデータ・エクスプローラーで、「スキーマ」を展開 します

  2. 赤いエラー アイコンを示すスキーマを展開します。

  3. スキーマの下で、赤いエラー アイコンがあるフォルダーを展開します。

  4. 赤いエラー アイコンが表示されているオブジェクトを選択します。

  5. 右側のペインで [レポート] タブを選択します。

  6. [レポート] タブの上部にはドロップダウン リストがあります。 一覧に [統計] が表示されている場合は、選択内容を [ソース] に変更します。

    SSMA では、ソース コードと、コードのすぐ上に複数のボタンが表示されます。

  7. [次の問題] ボタン (右向きの矢印が付いた赤いエラー アイコン) を選択します。

    SSMA では、現在のオブジェクトで検出された最初の問題のあるソース コードが強調表示されます。

変換できなかった項目ごとに、そのオブジェクトで何を行うかを決定する必要があります。

  • [SQL] タブでプロシージャのソース コードを変更できます。

  • Db2 データベース内のオブジェクトを変更して、問題のあるコードを除去または修正することができます。 更新されたコードを SSMA に読み込むには、メタデータを更新する必要があります。 詳細については、Db2 データベースへの接続を参照してください

  • 移行からオブジェクトを除外できます。 SQL Server メタデータ エクスプローラーと Db2 メタデータ エクスプローラーで、項目の横にあるチェック ボックスをオフにしてから、オブジェクトを SQL Server に読み込み、Db2 からデータを移行します。