SQL Server から PostgreSQL への変換設定を理解する - AWS Database Migration Service

SQL Server から PostgreSQL への変換設定を理解する

DMS Schema Conversion の SQL Server から PostgreSQL へのコンバージョン設定は、次のとおりです。

  • 生成 AI を使用して該当するデータベースオブジェクトを変換するには、[生成 AI] 設定を有効にする。生成 AI を使用して正常に変換されたオブジェクトは、変換でデータ内のパターンに基づいて予測を生成する機械学習モデルが使用されることを示すアクション項目 7744 で明確に識別できる。詳細については、「生成 AI を使用したデータベースオブジェクトの変換」を参照してください。

  • SQL Server では、複数のテーブルで同じインデックス名を使用できるが、PostgreSQL では、スキーマで使用するインデックス名がすべて一意である必要がある。DMS Schema Conversion がすべてのインデックスのために固有の名前を生成するようにするには、[インデックスの一意の名前を生成] を選択する。

  • PostgreSQL バージョン 10 以前のバージョンでは、プロシージャをサポートしていない。PostgreSQL でのプロシージャの使用に慣れていない場合は、AWS DMS が SQL Server プロシージャを PostgreSQL 関数に変換できる。このためには、[プロシージャを関数に変換] を選択する。

  • ソースの SQL Server データベースは、EXEC の出力をテーブルに保存できる。DMS Schema Conversion は、一時テーブルと、この機能をエミュレートする追加のプロシージャが作成する。このエミュレーションを使用するには、 [Create additional routines to handle open datasets] を選択する。

  • 変換されるコード内のスキーマ名に使用するテンプレートを定義できる。[スキーマ名] で、次のオプションのいずれかを選択する。

    • DB – SQL Server のデータベース名を PostgreSQL のスキーマ名として使用する。

    • SCHEMA – SQL Server のスキーマ名を PostgreSQL のスキーマ名として使用する。

    • DB_SCHEMA – SQL Server データベースとスキーマ名の組み合わせを PostgreSQL のスキーマ名として使用する。

  • ソースオペランドの名前の大文字と小文字は維持できる。オペランド名が小文字に変換されないようにするには、[大文字と小文字を区別する操作では小文字へのキャストを避ける] を選択する。このオプションは、ソースデータベースで大文字と小文字の区別機能が有効になっている場合にのみ利用できる。

  • ソースデータベースのパラメータ名は維持できる。DMS Schema Conversion は、変換されるコードのパラメータ名に二重引用符を追加できる。このためには、[元のパラメータ名を保持] を選択する。

  • ソースデータベースのルーチンパラメータの長さを保持できます。DMS スキーマ変換はドメインを作成し、このドメインを使用してルーチンパラメータの長さを指定します。そのためには、[パラメータの長さを保持] を選択します。

  • サポートされていないビルトインオブジェクトをスタブオブジェクトに変換するには、[Convert unsupported built-in objects to stub objects] 設定を有効にします。

    • 有効にすると、DMS SC はサポートされていないビルトインオブジェクトをターゲットデータベース内の対応するスタブオブジェクトに置き換えます。この機能は、通常は移行の問題 7811 または 7904 で囲まれるコードセクションを変換します。プロシージャについてはソースビルトインオブジェクト PROCEDURE、ビューまたはテーブルについては VIEW のタイプに基づいてスタブオブジェクトを作成します。

      サポートされていないオブジェクトの呼び出しでソースデータベースオブジェクトを変換すると、スタブオブジェクトの呼び出しと移行の問題 7822 が発生します。

      [Create stub objects in a separate schema] オプションを有効にすると、別のスキーマでスタブオブジェクトを作成できます。このオプションを選択すると、スタブオブジェクトはターゲットデータベースの aws_sqlserver_stub という特別なスキーマで作成されます。選択しない場合、スタブオブジェクトは呼び出し元のオブジェクトと同じスキーマで作成されます。

    • スタブルーチン名は、元のビルトインの完全修飾名に基づいて決定されます。スタブビューの場合、命名規則にはシステムスキーマ名 system_schema_name$builtin_view_name が含まれます。

      再変換中、DMS SC はターゲットデータベース内の既存のスタブルーチンをチェックします。名前と入力パラメータが同じであるルーチンが既に存在する場合、そのルーチンは上書きされません。

      変換後、必要に応じてスタブルーチンのカスタムコードを確認して実装します。

  • DMS Schema Conversion のすべての文字列データ型に対する CITEXT データ型の設定には、以下が含まれます。

    • SQL Server から PostgreSQL への変換時に大文字と小文字を区別しない文字列オペレーションに CITEXT データ型を使用するには、[Use CITEXT for all string datatypes] 設定を有効にします。このオプションは、大文字と小文字を区別しない SQL Server から大文字と小文字を区別する PostgreSQL 環境に移行する場合に、動作の一貫性を維持するのに役立ちます。

    • このオプションを有効にすると、DMS SC は関連するすべての文字列データ型をソース SQL Server データベースから PostgreSQL の CITEXT に変換します。これにより、条件で明示的な LOWER () 関数呼び出しが不要になり、条件付きオペレーションの文字列式が CITEXT に自動的にキャストされます。

    • SQL Server インスタンスで大文字と小文字が区別されるかどうかを確認するには、次のクエリを実行します。

      SELECT SERVERPROPERTY('COLLATION');

      結果に「CI」が含まれる場合は大文字と小文字が区別されず、「CS」が含まれる場合は大文字と小文字が区別されます。

    • CITEXT 変換は、大文字と小文字を区別する明示的な照合設定がサーバー、データベース、または列レベルで使用されるシナリオでは適用されない場合があります。

      この機能を使用するには、CITEXT モジュールがターゲット PostgreSQL データベースにインストールされ、使用可能であることを確認してください。

    • CITEXT データ型変換を使用する場合は、以下のベストプラクティスを考慮してください。

      • 大文字と小文字を区別しない SQL Server から移行する場合、PostgreSQL で動作の一貫性を維持するためにこの機能を有効にします。

      • アプリケーションコードを確認して、大文字と小文字を区別する文字列オペレーションに依存していないことを確認します。

      • 移行後にアプリケーションを徹底的にテストし、大文字と小文字を区別しない動作が想定どおりに維持されていることを確認します。