すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:自己管理型 SQL Server データベースから ApsaraDB RDS for SQL Server インスタンスへのデータの移行

最終更新日:Feb 22, 2025

このトピックでは、Data Transmission Service (DTS) を使用して、自己管理型 SQL Server データベースから ApsaraDB RDS for SQL Server インスタンスにデータを移行する方法について説明します。

前提条件

  • 自己管理型 SQL Server データベースのバージョンが DTS でサポートされています。詳細については、「データ移行シナリオの概要」をご参照ください。

  • 移行先 ApsaraDB RDS for SQL Server インスタンスが作成されています。詳細については、「ApsaraDB RDS for SQL Server インスタンスの作成」をご参照ください。

  • 移行先 ApsaraDB RDS for SQL Server インスタンスの使用可能なストレージ容量が、ソースの自己管理型 SQL Server データベースのデータ総容量よりも大きくなっています。

  • ソースデータベースが以下のいずれかの条件に該当する場合は、ApsaraDB RDS for SQL Server のバックアップ機能を使用してデータを移行することをお勧めします。詳細については、「自己管理型データベースから ApsaraDB RDS for SQL Server インスタンスにデータを移行する」をご参照ください。

    • ソースインスタンスに 10 個を超えるデータベースが含まれています。

    • ソースインスタンスの単一データベースが 1 時間未満の間隔でログをバックアップしています。

    • ソースインスタンスの単一データベースが 1 時間ごとに 100 個を超える DDL 文を実行しています。

    • ソースインスタンスの単一データベースのログ書き込み速度が 20 MB/s です。

    • ソース ApsaraDB RDS for SQL Server インスタンスの 1,000 個を超えるテーブルで変更データキャプチャ (CDC) 機能を有効にする必要があります。

    • ソース ApsaraDB RDS for SQL Server インスタンスのデータベースのログに、ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、または計算列を含むテーブルが関係しています。以下の SQL 文を実行して、ソースデータベースにこれらのテーブルが含まれているかどうかを確認できます。

      1. 以下の SQL 文を実行して、ヒープテーブルを確認します。

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0);
      2. 以下の SQL 文を実行して、プライマリキーのないテーブルを確認します。

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK');
      3. 以下の SQL 文を実行して、クラスター化インデックス列に含まれていないプライマリキー列を確認します。

        SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter);
      4. 以下の SQL 文を実行して、圧縮テーブルを確認します。

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0;
      5. 以下の SQL 文を実行して、計算列を含むテーブルを確認します。

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1);

使用上の注意

説明

DTS は、ソースデータベースの外部キーを宛先データベースに移行しません。そのため、ソースデータベースのカスケード操作と削除操作は宛先データベースに移行されません。

制限タイプ

説明

ソースデータベースの制限

  • ソースデータベースがデプロイされているサーバーには、十分なアウトバウンド帯域幅が必要です。そうでない場合、データ移行速度が低下します。

  • 移行するテーブルには、PRIMARY KEY または UNIQUE 制約があり、すべてのフィールドが一意である必要があります。そうでない場合、宛先データベースに重複するデータレコードが含まれる可能性があります。

  • 移行対象のオブジェクトとしてテーブルを選択し、宛先データベースでテーブルの名前変更や列の名前変更などのテーブルの編集が必要な場合は、1 つのデータ移行タスクで最大 1,000 個のテーブルを移行できます。1,000 個を超えるテーブルを移行するタスクを実行すると、リクエストエラーが発生します。この場合、複数のタスクを構成してテーブルを移行するか、データベース全体を移行するタスクを構成することをお勧めします。

  • 1 つのデータ移行タスクを実行して、最大 10 個のデータベースを移行できます。10 個を超えるデータベースを移行する場合は、複数のタスクを構成してデータベースを移行することをお勧めします。そうでない場合、データ移行タスクのパフォーマンスと安定性が損なわれる可能性があります。

  • 増分データを移行する場合は、以下の要件が満たされていることを確認してください。

    • データロギング機能が有効になっている必要があります。バックアップモードは「完全」に設定し、完全物理バックアップを実行する必要があります。

    • 増分データ移行のみを実行する場合は、ソースデータベースのデータログを 24 時間以上保持する必要があります。完全データ移行と増分データ移行の両方を実行する場合は、ソースデータベースのデータログを 7 日以上保持する必要があります。そうでない場合、Data Transmission Service (DTS) がデータログを取得できず、タスクが失敗する可能性があります。場合によっては、データの不整合または損失が発生することさえあります。完全データ移行が完了したら、保存期間を 24 時間以上に設定できます。上記の要件に基づいてデータログの保存期間を設定してください。そうでない場合、DTS のサービスレベルアグリーメント (SLA) はサービスの信頼性またはパフォーマンスを保証しません。

  • ソースデータベースから移行するテーブルに対して変更データキャプチャ (CDC) 機能を有効にする必要がある場合は、以下の条件を満たす必要があります。そうでない場合、事前チェックは失敗します。

    • sys.sysservers ビューの srvname フィールドの値が、SERVERPROPERTY 関数の戻り値と同じです。

    • ソースデータベースが自己管理型 SQL Server データベースの場合、データベース所有者は sa ユーザーである必要があります。ソースデータベースが ApsaraDB RDS for SQL Server データベースの場合、データベース所有者は sqlsa ユーザーである必要があります。

    • ソースデータベースが Enterprise エディションの場合、SQL Server 2008 以降を使用する必要があります。

    • ソースデータベースが Standard エディションの場合、SQL Server 2016 SP1 以降を使用する必要があります。

    • ソースデータベースが Standard または Enterprise エディションで、バージョンが SQL Server 2017 の場合は、バージョンを更新することをお勧めします。

  • DTS は fn_log 関数を使用してソースデータベースのログを取得します。ただし、この関数にはパフォーマンスボトルネックがあります。タスクが完了する前にソースデータベースのログをクリアしないことをお勧めします。そうでない場合、タスクが失敗する可能性があります。

  • ソースデータベースでの操作の制限:

    • スキーマ移行と完全データ移行中は、DDL 文を実行してデータベースまたはテーブルのスキーマを変更しないでください。そうでない場合、データ移行タスクは失敗します。

    • 完全データ移行のみを実行する場合は、データ移行中にソースデータベースにデータを書き込まないでください。そうでない場合、ソースデータベースと宛先データベース間でデータが不整合になります。データの整合性を確保するために、移行タイプとして「スキーマ移行」、「完全データ移行」、および「増分データ移行」を選択することをお勧めします。

  • ソースデータベースが読み取り専用インスタンスの場合、DDL 操作を移行することはできません。

  • ソースデータベースが Azure SQL Database の場合、データ移行タスクで移行できるデータベースは 1 つだけです。

  • ソースデータベースが ApsaraDB RDS for SQL Server データベースであり、データ移行タスクで増分データが移行される場合は、透過データ暗号化 (TDE) 機能が無効になっていることを確認してください。これにより、インスタンスが想定どおりに実行されるようになります。詳細については、「TDE の構成」をご参照ください。

  • ハイブリッドログベースの解析モードでは、ソースデータベースに対して列を追加または削除する操作を 10 分以内に複数回実行することはできません。たとえば、10 分以内に以下の SQL 文を実行すると、タスクでエラーが報告されます。

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • ソースデータベースが SQL Server Web エディションを実行する ApsaraDB RDS for SQL Server インスタンスである場合は、タスクを構成するときに、SQL Server 増分同期モード パラメーターを ソースデータベースのログに基づく増分同期 (ヒープテーブル非対応) に設定する必要があります。

  • 完全データ移行中は、ソースデータベースの READ_COMMITTED_SNAPSHOT のトランザクション処理モードパラメーターを有効にすることをお勧めします。そうでない場合、共有ロックが原因でデータ書き込みに影響を与えたり、データの不整合が発生したり、インスタンスが実行に失敗したりする可能性があります。このような状況で発生する問題は、DTS のサービスレベルアグリーメント (SLA) の対象外です。

その他の制限

  • DTS は、TIMESTAMP、CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY などのタイプのデータは移行しません。

  • オブジェクト設定 ステップで SQL Server 増分同期モード パラメーターを ソースデータベースのログに基づく増分同期 (ヒープテーブル非対応) に設定した場合、移行するテーブルには、プライマリキー列を含むクラスター化インデックスが必要です。移行するテーブルは、ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、または計算列を含むテーブルにすることはできません。ハイブリッドログベースの解析モードを使用する場合は、上記の制限を無視してください。

  • オブジェクト設定 ステップで SQL Server 増分同期モード パラメーターを クラスター化テーブルはログ解析で増分同期し、ヒープテーブルの場合は CDC で増分同期します (ハイブリッド式ログ解析) に設定した場合、DTS は CDC コンポーネントを使用して増分データを移行します。ソースデータベースの CDC ジョブが想定どおりに実行されていることを確認してください。そうでない場合、DTS タスクは失敗します。

    説明
    • CDC が有効になっているテーブルが 1,000 個以下のデータ移行タスクを指定することをお勧めします。そうでない場合、タスクが遅延したり不安定になったりする可能性があります。

    • DTS の増分データ移行タスクのプレモジュールは、ソースデータベースで CDC を有効にします。このプロセスでは、SQL Server データベースの制限により、ソースデータベースで数秒間続くロックされたテーブルが発生します。

  • オブジェクト設定 ステップで SQL Server 増分同期モード パラメーターを 増分同期のための CDC インスタンスのポーリングとクエリ に設定した場合、以下の制限が適用されます。

    • DTS インスタンスで使用されるソースデータベースアカウントには、CDC 機能を有効にする権限が必要です。データベースレベルの CDC を有効にするには、sysadmin ロールが割り当てられたアカウントを使用する必要があります。テーブルレベルの CDC を有効にするには、特権アカウントを使用する必要があります。

      説明
      • Microsoft Azure SQL Database のサーバー管理者アカウントには、必要な権限があります。vCore モデルに基づいて Azure SQL Database で購入されたすべてのデータベースで CDC を有効にすることができます。データベーストランザクションユニット (DTU) モデルに基づいて Azure SQL Database で購入されたデータベースの場合、データベースのサービス階層が S3 以上の場合にのみ CDC を有効にすることができます。

      • Amazon RDS for SQL Server インスタンスの特権アカウントには、必要な権限があります。データベースレベルでストアドプロシージャに対して CDC を有効にすることができます。

      • クラスター化列ストアインデックスに対して CDC を有効にすることはできません。

      • DTS の増分データ移行タスクのプレモジュールは、ソースデータベースで CDC を有効にします。このプロセスでは、SQL Server データベースの制限により、ソースデータベースで数秒間続くロックされたテーブルが発生します。

    • DTS は、ソースデータベースの各テーブルの CDC インスタンスに対してラウンドロビンクエリを実行することで増分データを取得します。そのため、ソースデータベースから移行するテーブルの数は 1,000 を超えることはできません。そうでない場合、データ移行タスクが遅延したり不安定になったりする可能性があります。

    • 1 分以内に列を追加または削除する DDL 文を 2 回以上実行することはできません。そうでない場合、データ移行タスクが失敗する可能性があります。

    • データ移行中は、ソースデータベースの CDC インスタンスを変更することはできません。そうでない場合、データ移行タスクが失敗したり、データ損失が発生したりする可能性があります。

  • 異なるバージョンのデータベース間でデータを移行する場合は、データベースのバージョンに互換性があることを確認してください。

  • ソースデータベースのログに基づく増分同期モードでは、DTS はソースデータベースに dts_cdc_sync_ddl という名前のトリガー、dts_sync_progress という名前のハートビートテーブル、および dts_cdc_ddl_history という名前の DDL 履歴テーブルを作成して、データ移行の遅延が正確であることを確認します。ハイブリッドログベースの解析増分同期モードでは、DTS は dts_cdc_sync_ddl という名前のトリガー、dts_sync_progress という名前のハートビートテーブル、および dts_cdc_ddl_history という名前の DDL 履歴テーブルを作成し、ソースデータベースと特定のテーブルに対して CDC を有効にします。ソースデータベースの CDC が有効になっているテーブルの 1 秒あたりの最大レコード数を 1,000 に設定することをお勧めします。

  • データを移行する前に、データ移行がソースデータベースと宛先データベースのパフォーマンスに与える影響を評価してください。オフピーク時にデータを移行することをお勧めします。完全データ移行中は、DTS はソースデータベースと宛先クラスタの読み取りリソースと書き込みリソースを使用します。これにより、データベースサーバーの負荷が増加する可能性があります。

  • 完全データ移行中、同時 INSERT 操作により、宛先データベースのテーブルで断片化が発生します。完全データ移行が完了すると、宛先データベースの使用済み表領域のサイズがソースデータベースのサイズよりも大きくなります。

  • FLOAT または DOUBLE データタイプの列の精度の設定がビジネス要件を満たしていることを確認する必要があります。DTS は ROUND(COLUMN,PRECISION) 関数を使用して、FLOAT または DOUBLE データタイプの列から値を取得します。精度を指定しない場合、DTS は FLOAT データタイプの列の精度を 38 桁に設定し、DOUBLE データタイプの列の精度を 308 桁に設定します。

  • DTS は、過去 7 日以内に失敗したデータ移行タスクの再開を試みます。ワークロードを宛先データベースに切り替える前に、失敗したタスクを停止または解放する必要があります。また、REVOKE 文を実行して、DTS が宛先データベースにアクセスするために使用するアカウントから書き込み権限を取り消すこともできます。そうでない場合、失敗したタスクが再開された後、ソースデータベースのデータが宛先データベースのデータを上書きします。

  • データ移行タスクに増分データ移行が含まれている場合、DTS ではインデックス再作成操作を実行できません。インデックス再作成操作を実行すると、データ移行タスクが失敗し、データ損失が発生する可能性があります。

    説明

    DTS は、CDC が有効になっているテーブルのプライマリキーに関連する DDL 操作を移行できません。

  • 1 つの移行タスクで移行される CDC 対応テーブルの数が、[DTS がサポートする CDC が有効になっているテーブルの最大数] を超えると、事前チェックは失敗します。

  • タスクに増分データ移行が含まれており、CDC が有効になっているテーブルで 1 つのフィールドに 64 KB を超えるサイズのデータが必要な場合は、事前に exec sp_configure 'max text repl size', -1; コマンドを実行してソースデータベースを構成します。

    説明

    デフォルトでは、CDC ジョブは最大 64 KB のデータを処理できます。

  • 増分データ移行を実行するには、宛先データベースのトリガーと外部キーを無効にする必要があります。そうでない場合、データ移行タスクは失敗します。

  • DTS タスクの実行に失敗した場合、DTS テクニカルサポートは 8 時間以内にタスクの復元を試みます。復元中は、タスクが再起動され、タスクのパラメーターが変更される場合があります。

    説明

    タスクのパラメーターのみが変更される可能性があります。データベースのパラメーターは変更されません。 変更される可能性のあるパラメーターには、「DTS インスタンスのパラメーターの変更」トピックの「インスタンスパラメーターの変更」セクションのパラメーターが含まれますが、これらに限定されません。

特別な場合

  • ソースインスタンスが ApsaraDB RDS for SQL Server インスタンスの場合、DTS は ApsaraDB RDS for SQL Server インスタンスに rdsdt_dtsacct という名前のアカウントを自動的に作成します。このアカウントはデータ移行に使用されます。データ移行タスクの実行中は、このアカウントを削除したり、このアカウントのパスワードを変更したりしないでください。そうでない場合、タスクが失敗する可能性があります。詳細については、「システムアカウント」をご参照ください。

  • 宛先インスタンスが ApsaraDB RDS for SQL Server インスタンスの場合、DTS は宛先インスタンスに宛先データベースを自動的に作成します。ただし、移行するデータベースの名前が宛先 ApsaraDB RDS for SQL Server インスタンスの命名規則に準拠していない場合は、データ移行タスクを構成する前に、宛先インスタンスにデータベースを手動で作成する必要があります。詳細については、「データベースの作成」をご参照ください。

課金

移行タイプ

インスタンス構成料金

インターネットトラフィック料金

スキーマ移行と完全データ移行

無料。

インターネット経由で Alibaba Cloud からデータが移行される場合にのみ課金されます。詳細については、「課金概要」をご参照ください。

増分データ移行

課金されます。詳細については、「課金概要」をご参照ください。

移行タイプ

  • スキーマ移行

    DTS は、選択したオブジェクトのスキーマをソースデータベースから宛先データベースに移行します。

    • DTS は、テーブル、ビュー、トリガー、シノニム、SQL ストアドプロシージャ、SQL 関数、プランガイド、ユーザー定義型、ルール、デフォルト、シーケンスなどのオブジェクトタイプのスキーマ移行をサポートしています。

    • DTS は、アセンブリ、サービスブローカー、フルテキストインデックス、フルテキストカタログ、分散スキーマ、分散関数、共通言語ランタイム (CLR) ストアドプロシージャ、CLR スカラー値関数、CLR テーブル値関数、内部テーブル、システム、または集計関数のスキーマは移行しません。

  • 完全データ移行

    DTS は、必要なオブジェクトの既存データをソースデータベースから宛先データベースに移行します。

  • 増分データ移行

    完全データ移行が完了すると、DTS はソースデータベースから宛先データベースに増分データを移行します。増分データ移行により、データ移行中に自己管理型アプリケーションのサービスを中断することなく、データをスムーズに移行できます。

増分データ移行をサポートする SQL 操作

操作タイプ

SQL 文

DML

INSERT、UPDATE、DELETE

説明

UPDATE 操作で大きなフィールドのみが更新される場合、DTS はその操作を移行しません。

DDL

  • CREATE TABLE

    説明

    CREATE TABLE 操作でパーティションテーブルまたは関数を含むテーブルが作成される場合、DTS はその操作を移行しません。

  • ALTER TABLE

    ALTER TABLE 操作には、ADD COLUMN と DROP COLUMN のみ含まれます。

  • DROP TABLE

  • CREATE INDEX と DROP INDEX

説明
  • トランザクション DDL 文は移行できません。たとえば、DTS は、複数の列に対する DDL 操作を含む SQL 操作、または DDL 操作と DML 操作の両方を含む SQL 操作を移行しません。このような SQL 操作を移行すると、データ損失が発生する可能性があります。

  • DTS は、ユーザー定義型を含む DDL 操作を移行しません。

  • DTS は、オンライン DDL 操作を移行しません。

  • DTS は、名前に予約キーワードが含まれるオブジェクトに対して実行される DDL 操作を移行しません。

  • DTS は、システム ストアドプロシージャで実行される DDL 操作を移行しません。

  • DTS は TRUNCATE TABLE 操作を移行しません。

データベースアカウントに必要な権限

データベースタイプ

スキーマ移行

完全データ移行

増分データ移行

自己管理型 SQL Server データベース

SELECT 権限

SELECT 権限

sysadmin

ApsaraDB RDS for SQL Server インスタンス

読み取りおよび書き込み権限

データベースアカウントの作成と承認方法の詳細については、以下のトピックをご参照ください。

データ移行プロセス

オブジェクト間の依存関係によってデータ移行が失敗するのを防ぐため、DTS はソース SQL Server データベースからスキーマとデータを以下の順序で移行します。

  1. テーブル、ビュー、シノニム、ユーザー定義型、ルール、デフォルト、プランガイドのスキーマを移行します。

  2. 完全データ移行を実行します。

  3. SQL ストアドプロシージャ、SQL 関数、トリガー、外部キーのスキーマを移行します。

  4. 増分データ移行を実行します。

準備

説明

増分データを移行するタスクを構成する前に、自己管理型 SQL Server データベースでログ設定を構成し、クラスター化インデックスを作成する必要があります。

重要

複数のデータベースから増分データを移行する場合は、データベースごとにステップ 1 ~ 3 を繰り返します。そうでない場合、データの不整合が発生する可能性があります。

  1. 自己管理型 SQL Server データベースで以下の文を実行して、復旧モデルを完全復旧モデルに変更します。

    use master;
    GO
    ALTER DATABASE <database_name> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE;
    GO

    パラメーターの説明:

    <database_name>: ソースデータベースの名前。

    例:

    use master;
    GO
    ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE;
    GO
  2. 以下の文を実行して、ソースデータベースの論理バックアップを作成します。論理バックアップをすでに作成している場合は、このステップをスキップします。

    BACKUP DATABASE <database_name> TO DISK='<physical_backup_device_name>';
    GO

    パラメーターの説明:

    • <database_name>: ソースデータベースの名前。

    • <physical_backup_device_name>: バックアップファイルのストレージパスとファイル名。

    例:

    BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak';
    GO
  3. 以下の文を実行して、ソースデータベースのログエントリをバックアップします。

    BACKUP LOG <database_name> to DISK='<physical_backup_device_name>' WITH init;
    GO

    パラメーターの説明:

    • <database_name>: ソースデータベースの名前。

    • <physical_backup_device_name>: バックアップファイルのストレージパスとファイル名。

    例:

    BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init;
    GO

手順

  1. 以下のいずれかの方法を使用してデータ移行ページに移動し、データ移行インスタンスが存在するリージョンを選択します。

    DTS コンソール

    1. DTS コンソール にログインします。

    2. 左側のナビゲーションウィンドウで、データの移行 をクリックします。

    3. ページの左上隅で、データ移行インスタンスが存在するリージョンを選択します。

    DMS コンソール

    説明

    実際の操作は、DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。

    1. DMS コンソール にログインします。

    2. 上部のナビゲーションバーで、ポインターを [データ開発] > DTS (DTS) > データ移行 の上に移動します。

    3. [データ移行タスク] の右側にあるドロップダウンリストから、データ同期インスタンスが存在するリージョンを選択します。

  2. タスクの作成 をクリックして、タスク構成ページに移動します。

  3. オプション。 ページの右上隅にある 新バージョンの設定ページを試してみる をクリックします。

    説明
    • ページの右上隅に 旧バージョンの設定ページに戻る ボタンが表示されている場合は、このステップをスキップします。

    • 構成ページの新バージョンと旧バージョンでは、特定のパラメーターが異なる場合があります。新しいバージョンの構成ページを使用することをお勧めします。

  4. ソースデータベースと宛先データベースを構成します。以下の表にパラメーターを示します。

    警告

    ソースデータベースと宛先データベースを構成した後、ページの上部に表示される [制限] を読むことをお勧めします。そうでない場合、タスクが失敗したり、データの不整合が発生したりする可能性があります。

    セクション

    パラメーター

    説明

    該当なし

    タスク名

    DTS タスクの名前。DTS はタスク名を自動的に生成します。タスクを簡単に識別できる分かりやすい名前を指定することをお勧めします。一意のタスク名を指定する必要はありません。

    [ソースデータベース]

    [既存の接続を選択]

    使用したいインスタンス。ビジネス要件に基づいて、既存のインスタンスを使用するかどうかを選択できます。

    • 既存のインスタンスを選択すると、DTS はデータベースのパラメーターを自動的に入力します。

    • 既存のインスタンスを使用しない場合は、以下のデータベース情報を構成する必要があります。

    説明

    データベースタイプ

    ソースデータベースのタイプ。[SQL Server] を選択します。

    アクセス方法

    ソースデータベースのアクセス方法。[パブリック IP アドレス] を選択します。

    説明

    ソースデータベースが自己管理型データベースの場合は、データベースのネットワーク環境を準備する必要があります。詳細については、「準備の概要」をご参照ください。

    インスタンスリージョン

    自己管理型 SQL Server データベースが存在するリージョン。

    [ホスト名または IP アドレス]

    自己管理型 SQL Server データベースへの接続に使用するエンドポイント。この例では、パブリック IP アドレスを入力します。

    [ポート番号]

    自己管理型 SQL Server データベースのサービスポート番号。デフォルト値: [1433]

    データベースアカウント

    自己管理型 SQL Server データベースのアカウント。アカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」セクションをご参照ください。

    データベースパスワード

    データベースインスタンスへのアクセスに使用するパスワード。

    暗号化

    ソースデータベースへの接続を暗号化するかどうかを指定します。ビジネス要件に基づいて、非暗号化 または SSL 暗号化 を選択します。

    • ソースデータベースで SSL 暗号化が無効になっている場合は、非暗号化 を選択します。

    • ソースデータベースで SSL 暗号化が有効になっている場合は、SSL 暗号化 を選択します。デフォルトでは、DTS はサーバー証明書を信頼します。

    [宛先データベース]

    [既存の接続を選択]

    使用したいインスタンス。ビジネス要件に基づいて、既存のインスタンスを使用するかどうかを選択できます。

    • 既存のインスタンスを選択すると、DTS はデータベースのパラメーターを自動的に入力します。

    • 既存のインスタンスを使用しない場合は、以下のデータベース情報を構成する必要があります。

    説明

    データベースタイプ

    宛先データベースのタイプ。[SQL Server] を選択します。

    アクセス方法

    宛先データベースのアクセス方法。[alibaba Cloud インスタンス] を選択します。

    インスタンスリージョン

    宛先 ApsaraDB RDS for SQL Server インスタンスが存在するリージョン。

    [インスタンス ID]

    宛先 ApsaraDB RDS for SQL Server インスタンスの ID。

    データベースアカウント

    宛先 ApsaraDB RDS for SQL Server インスタンスのデータベースアカウント。アカウントに必要な権限の詳細については、「データベースアカウントに必要な権限」をご参照ください。

    データベースパスワード

    データベースインスタンスへのアクセスに使用するパスワード。

    暗号化

    宛先データベースへの接続を暗号化するかどうかを指定します。ビジネス要件に基づいて、非暗号化 または SSL 暗号化 を選択します。

    • 宛先データベースで SSL 暗号化が無効になっている場合は、非暗号化 を選択します。

    • 宛先データベースで SSL 暗号化が有効になっている場合は、SSL 暗号化 を選択します。デフォルトでは、DTS はサーバー証明書を信頼します。

  5. ページの下部にある [接続をテストして続行] をクリックし、表示される [DTS サーバーの CIDR ブロック] ダイアログボックスの 接続テスト をクリックします。

    説明

    DTS サーバーの CIDR ブロックをソースデータベースと宛先データベースのセキュリティ設定に自動または手動で追加して、DTS サーバーからのアクセスを許可できるようにしてください。詳細については、「DTS サーバーの CIDR ブロックの追加」をご参照ください。

  6. 移行するオブジェクトを構成します。

    1. オブジェクト設定 ページで、移行するオブジェクトを構成します。

      パラメーター

      説明

      移行タイプ

      • 完全データ移行のみを実行するには、[スキーマ移行][完全データ移行] を選択します。

      • データ移行中のサービス継続性を確保するには、[スキーマ移行][完全データ移行][増分データ移行] を選択します。

      説明
      • [スキーマ移行] を選択しない場合は、宛先データベースにデータを受信するためのデータベースとテーブルが作成され、[選択したオブジェクト] でオブジェクト名マッピング機能が有効になっていることを確認してください。

      • [増分データ移行] を選択しない場合は、データ移行中にソースデータベースにデータを書き込まないことをお勧めします。これにより、ソースデータベースと宛先データベース間でデータの整合性が確保されます。

      移行元データベースのトリガーを移行する方法

      ソースデータベースからトリガーを移行するために使用される方法。ビジネス要件に基づいて移行方法を選択できます。移行するトリガーがない場合は、このパラメーターを構成する必要はありません。詳細については、「ソースデータベースからトリガーを同期または移行する」をご参照ください。

      説明

      このパラメーターは、移行タイプ パラメーターで スキーマ移行増分データ移行 の両方を選択した場合にのみ使用できます。

      SQL Server 増分同期モード

      • クラスター化テーブルはログ解析で増分同期し、ヒープテーブルの場合は CDC で増分同期します (ハイブリッド式ログ解析):

        • メリット:

          • このモードは、ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、および計算列を含むテーブルをサポートしています。

          • このモードは、より高い安定性とさまざまな完全な DDL 文を提供します。

        • デメリット:

          • DTS は、ソースデータベースにトリガー dts_cdc_sync_ddl、ハートビートテーブル dts_sync_progress、および DDL ストレージテーブル dts_cdc_ddl_history を作成し、ソースデータベースと特定のテーブルに対して変更データキャプチャ (CDC) を有効にします。

          • ソースデータベースの CDC が有効になっているテーブルに対して SELECT INTO または TRUNCATE 文を実行することはできません。ソースデータベースで DTS によって作成されたトリガーは手動で削除できません。

      • ソースデータベースのログに基づく増分同期 (ヒープテーブル非対応):

        • メリット:

          このモードは、ソースデータベースの設定を変更しません。

        • デメリット:

          このモードは、ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、または計算列を含むテーブルをサポートしていません。

      • 増分同期のための CDC インスタンスのポーリングとクエリ:

        • メリット:

          • ソースデータベースが Amazon RDS for SQL Server インスタンス、Microsoft Azure SQL Database のデータベース、Microsoft Azure SQL Managed Instance、Microsoft Azure SQL Server on Virtual Machine、または Google Cloud SQL for SQL Server インスタンスの場合、完全データ移行と増分データ移行がサポートされます。

          • SQL Server のネイティブ CDC コンポーネントを使用して増分データを取得する場合、増分移行はより安定し、ネットワーク帯域幅をあまり占有しません。

        • デメリット:

          • DTS インスタンスで使用されるソースデータベースアカウントには、CDC を有効にする権限が必要です。増分データ移行には約 10 秒かかります。

          • 複数のデータベースの複数のテーブルを移行すると、安定性とパフォーマンスの問題が発生する可能性があります。

      説明

      このパラメーターは、[移行タイプ][増分データ移行] パラメーターが含まれている場合にのみ使用できます。

      [DTS がサポートする CDC が有効になっているテーブルの最大数。]

      ビジネス要件に基づいて、DTS タスクがサポートする CDC が有効になっているテーブルの最大数を設定することをお勧めします。デフォルト値: 1,000。

      説明

      [SQL Server 増分同期モード] パラメーターを [ソースデータベースのログに基づく増分同期 (ヒープテーブルはサポートされていません)] に設定した場合、このパラメーターは使用できません。

      競合するテーブルの処理モード

      • エラーの事前チェックと報告: 宛先データベースにソースデータベースのテーブルと同じ名前を使用するテーブルが含まれているかどうかを確認します。ソースデータベースと宛先データベースに同じテーブル名のテーブルが含まれていない場合、事前チェックは合格です。そうでない場合、事前チェック中にエラーが返され、データ移行タスクを開始できません。

        説明

        ソースデータベースと宛先データベースに同じ名前のテーブルが含まれており、宛先データベースのテーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して、宛先データベースに移行されるテーブルの名前を変更できます。詳細については、「オブジェクト名のマッピング」をご参照ください。

      • エラーを無視して続行: ソースデータベースと宛先データベースの同じテーブル名の事前チェックをスキップします。

        警告

        エラーを無視して続行 を選択すると、データの不整合が発生し、ビジネスが以下の潜在的なリスクにさらされる可能性があります。

        • ソースデータベースと宛先データベースのスキーマが同じで、データレコードのプライマリキーが宛先データベースの既存のデータレコードと同じである場合、以下のシナリオが発生する可能性があります。

          • 完全データ移行中、DTS はデータレコードを宛先データベースに移行しません。宛先データベースの既存のデータレコードは保持されます。

          • 増分データ移行中、DTS はデータレコードを宛先データベースに移行します。宛先データベースの既存のデータレコードは上書きされます。

        • ソースデータベースと宛先データベースのスキーマが異なる場合、特定の列のみが移行されるか、データ移行タスクが失敗します。注意して進めてください。

      ソースオブジェクト

      ソースオブジェクト セクションから 1 つ以上のオブジェクトを選択します。向右小箭头 アイコンをクリックして、オブジェクトを 選択中のオブジェクト セクションに追加します。

      説明

      列、テーブル、またはスキーマを移行対象のオブジェクトとして選択できます。テーブルまたは列を移行対象のオブジェクトとして選択した場合、DTS はビュー、トリガー、ストアドプロシージャなどの他のオブジェクトを宛先データベースに移行しません。

      選択中のオブジェクト

      • 宛先インスタンスに移行するオブジェクトの名前を変更するには、[選択したオブジェクト] セクションでオブジェクトを右クリックします。詳細については、「単一オブジェクトの名前のマッピング」をご参照ください。

      • 複数のオブジェクトの名前を一度に変更するには、[選択したオブジェクト] セクションの右上隅にある [一括編集] をクリックします。詳細については、「一度に複数のオブジェクト名をマッピングする」をご参照ください。

      説明
      • オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、そのオブジェクトに依存する他のオブジェクトが移行に失敗する可能性があります。

      • WHERE 条件を指定してデータをフィルタリングするには、選択中のオブジェクト セクションでテーブルを右クリックします。表示されるダイアログボックスで、条件を指定します。詳細については、「フィルター条件の指定」をご参照ください。

      • 特定のデータベースまたはテーブルに対して実行される SQL 操作を選択するには、選択中のオブジェクト セクションでオブジェクトを右クリックします。表示されるダイアログボックスで、移行する SQL 操作を選択します。増分移行をサポートする SQL 操作の詳細については、このトピックの「増分データ移行をサポートする SQL 操作」セクションをご参照ください。

    2. 次へ:詳細設定 をクリックして、詳細設定を構成します。

      パラメーター

      説明

      タスクのスケジュールに使用する専用クラスターの選択

      デフォルトでは、専用クラスタを指定しない場合、DTS はデータ移行タスクを共有クラスタにスケジュールします。データ移行タスクの安定性を向上させるには、専用クラスタを購入します。詳細については、「DTS 専用クラスタとは」をご参照ください。

      失敗した接続の再試行時間

      接続失敗時のリトライ時間の範囲。データ移行タスクの開始後にソースデータベースまたは宛先データベースへの接続に失敗した場合、DTS はリトライ時間の範囲内で直ちに接続を再試行します。有効な値: 10 ~ 1,440。単位: 分。デフォルト値: 720。パラメーターを 30 より大きい値に設定することをお勧めします。指定されたリトライ時間の範囲内で DTS がソースデータベースと宛先データベースに再接続された場合、DTS はデータ移行タスクを再開します。そうでない場合、データ移行タスクは失敗します。

      説明
      • 同じソースデータベースまたは宛先データベースを共有する複数のデータ移行タスクに異なるリトライ時間の範囲を指定した場合、後で指定した値が優先されます。

      • DTS が接続を再試行すると、DTS インスタンスの料金が発生します。ビジネス要件に基づいてリトライ時間の範囲を指定することをお勧めします。また、ソースデータベースと宛先インスタンスが解放された後、できるだけ早く DTS インスタンスを解放することもできます。

      移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。

      その他の問題のリトライ時間の範囲。たとえば、データ移行タスクの開始後に DDL または DML 操作の実行に失敗した場合、DTS はリトライ時間の範囲内で直ちに操作を再試行します。有効な値: 1 ~ 1440。単位: 分。デフォルト値: 10。パラメーターを 10 より大きい値に設定することをお勧めします。指定されたリトライ時間の範囲内で失敗した操作が正常に実行された場合、DTS はデータ移行タスクを再開します。そうでない場合、データ移行タスクは失敗します。

      重要

      移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 パラメーターの値は、失敗した接続の再試行時間 パラメーターの値よりも小さくなければなりません。

      完全移行率を制限するかどうか

      完全データ移行のスロットリングを有効にするかどうかを指定します。完全データ移行中、DTS はソースデータベースと宛先データベースの読み取りリソースと書き込みリソースを使用します。これにより、データベースサーバーの負荷が増加する可能性があります。ビジネス要件に基づいて、完全データ移行のスロットリングを有効にすることができます。スロットリングを構成するには、1 秒あたりのソースデータベースのクエリ率 QPS1 秒あたりの完全移行の行数 RPS1 秒あたりの完全移行データ量 (MB) BPS パラメーターを構成する必要があります。これにより、宛先データベースサーバーの負荷が軽減されます。

      説明

      移行タイプ パラメーターで 完全データ移行 を選択した場合にのみ、このパラメーターを構成できます。

      増分移行率を制限するかどうか

      増分データ移行のスロットリングを有効にするかどうかを指定します。スロットリングを構成するには、1 秒あたりの増分移行の行数 RPS1 秒あたりの増分移行データ量 (MB) BPS パラメーターを構成する必要があります。これにより、宛先データベースサーバーの負荷が軽減されます。

      説明

      移行タイプ パラメーターで 増分データ移行 を選択した場合にのみ、このパラメーターを構成できます。

      環境タグ

      DTS インスタンスを識別するために使用される環境タグ。ビジネス要件に基づいて環境タグを選択できます。この例では、このパラメーターを構成する必要はありません。

      ETL の設定

      抽出、変換、ロード (ETL) 機能を有効にするかどうかを指定します。詳細については、「ETL とは」をご参照ください。有効な値:

      [監視とアラート]

      データ移行タスクのアラートを構成するかどうかを指定します。タスクが失敗した場合、または移行遅延が指定されたしきい値を超えた場合、アラート連絡先に通知が送信されます。有効な値:

      • [いいえ]: アラートを構成しません。

      • [はい]: アラートを構成します。この場合、アラートのしきい値と アラート通知設定 も構成する必要があります。詳細については、「監視とアラートの構成」トピックの「DTS タスクの作成時に監視とアラートを構成する」セクションをご参照ください。

    3. [次のステップ: データ検証] をクリックして、データ検証タスクを構成します。

      データ検証機能の使用方法の詳細については、「データ検証タスクの構成」をご参照ください。

  7. タスク設定を保存し、事前チェックを実行します。

    • DTS タスクを構成するために関連 API 操作を呼び出すときに指定するパラメーターを表示するには、次:タスク設定の保存と事前チェック の上にポインターを移動し、OpenAPI パラメーターのプレビュー をクリックします。

    • パラメーターを表示する必要がない場合、またはすでに表示している場合は、ページの下部にある 次:タスク設定の保存と事前チェック をクリックします。

    説明
    • データ移行タスクを開始する前に、DTS は事前チェックを実行します。タスクが事前チェックに合格した後でのみ、データ移行タスクを開始できます。

    • タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある [詳細の表示] をクリックします。チェック結果に基づいて原因を分析した後、問題をトラブルシューティングします。その後、事前チェックを再実行します。

    • 事前チェック中に項目のアラートがトリガーされた場合:

      • アラート項目を無視できない場合は、失敗した項目の横にある [詳細の表示] をクリックして、問題をトラブルシューティングします。その後、事前チェックを再実行します。

      • アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。[詳細の表示] ダイアログボックスで、[無視] をクリックします。表示されるメッセージで、[OK] をクリックします。次に、[事前チェックを再実行] をクリックして、事前チェックを再実行します。アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

  8. インスタンスを購入します。

    1. [成功率][100%] になるまで待ちます。次に、[次へ: インスタンスの購入] をクリックします。

    2. [インスタンスの購入] ページで、データ移行インスタンスの [インスタンスクラス] パラメーターを構成します。以下の表にパラメーターを示します。

      セクション

      パラメーター

      説明

      新しいインスタンスクラス

      [リソースグループ]

      デフォルト値: [デフォルトリソースグループ]。詳細については、「リソース管理とは」をご参照ください。

      インスタンスクラス

      DTS は、移行速度が異なるインスタンスクラスを提供します。ビジネスシナリオに基づいてインスタンスクラスを選択できます。詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。

    3. チェックボックスをオンにして、[data Transmission Service (従量課金制) サービス規約] を読んで同意します。

    4. [購入して開始] をクリックします。表示されるメッセージで、[OK] をクリックします。

      データ移行ページでタスクの進捗状況を確認できます。