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

Data Transmission Service:RDS for SQL Server インスタンス間のデータ同期

最終更新日:Feb 07, 2026

Data Transmission Service (DTS) を使用して、RDS for SQL Server インスタンス間でデータを同期します。

前提条件

  • ソースおよびターゲットの RDS for SQL Server インスタンスを作成します。サポートされているバージョンについては、「同期ソリューションの概要」をご参照ください。インスタンスの作成方法については、「RDS for SQL Server インスタンスのクイック作成と使用」をご参照ください。

    重要

    ハイブリッドログ解析モードでは、[SQL Server 増分同期モード][非ヒープテーブルの増分同期にはログ解析を使用し、ヒープテーブルの増分同期には CDC を使用する] に設定されている場合、次のソースデータベースバージョンがサポートされています。

    • Enterprise Edition または Enterprise Evaluation Edition: バージョン 2012、2014、2016、2019、または 2022。

    • Standard Edition: バージョン 2016、2019、または 2022。

  • ターゲットの RDS for SQL Server インスタンスのストレージ領域は、ソースの RDS for SQL Server インスタンスのストレージ領域よりも大きくする必要があります。

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

    • データベース数が 10 を超える場合。

    • 単一データベースで 1 時間に複数回ログバックアップが実行される場合。

    • 単一データベースで 1 時間に 100 回を超える DDL 操作が実行される場合。

    • 単一データベースのログボリュームが 20 MB/秒を超える場合。

    • 1,000 を超えるテーブルで Change Data Capture (CDC) を有効にする必要がある場合。

    • ソースデータベースのログにヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、または計算列のあるテーブルが含まれている場合。以下の SQL ステートメントを実行して、これらのタイプのテーブルがソースデータベースに存在するかどうかを確認できます。

      1. ソースデータベース内のヒープテーブルを確認します。

        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. プライマリキーのないテーブルを確認します。

        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. ソースデータベースのクラスター化インデックス列に含まれていないプライマリキー列を確認します。

        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. ソースデータベース内の圧縮テーブルを確認します。

        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. 計算列を含むテーブルを確認します。

        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);
      6. スパース列を含むテーブルを確認します。

        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_sparse = 1);

注意事項

説明

DTS はソースデータベースから外部キーを同期しません。したがって、ソースデータベースでのカスケード操作はターゲットデータベースに同期されません。

タイプ

説明

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

  • 同期するテーブルには、プライマリキーまたは一意制約が必要であり、フィールドは一意である必要があります。そうでない場合、ターゲットデータベースに重複データが表示される可能性があります。

  • テーブルレベルでデータを同期する場合、列名のマッピングなどのオブジェクトを編集する必要があり、単一タスク内のテーブル数が 5,000 を超える場合は、テーブルを複数のタスクに分割してください。データベース全体を同期するようにタスクを構成することもできます。そうしないと、タスクの送信後にエラーが報告される可能性があります。

  • 単一の同期タスクは最大 10 個のデータベースをサポートします。この制限を超えると、安定性とパフォーマンスの問題が発生するリスクがあります。この場合、テーブルを分割し、複数のタスクで構成してください。

  • メモリ最適化テーブルは同期できません。

  • 特定のオブジェクトを同じターゲットデータベースに同期するようにタスクを構成する場合、同じテーブル名を持つがスキーマ名が異なるオブジェクトを選択することはできません。

  • DTS は `fn_log` 関数を使用してソースデータベースからログを取得します。この関数にはパフォーマンスボトルネックがあります。ソースデータベースのログを早めにクリアしすぎないでください。そうしないと、タスクが失敗する可能性があります。

  • データログ:

    • データログを有効にする必要があります。バックアップモードは Full に設定し、完全物理バックアップが正常に実行されている必要があります。

    • 増分同期タスクの場合、DTS はソースデータベースが 24 時間以上データログを保持することを要求します。完全同期と増分同期の両方を含むタスクの場合、DTS はソースデータベースが少なくとも 7 日間データログを保持することを要求します。完全同期が完了した後、ログ保持期間を 24 時間以上に変更できます。保持期間が短すぎると、DTS がデータログを取得できないため、DTS タスクが失敗する可能性があります。極端な場合、これによりデータ不整合やデータ損失が発生する可能性があります。DTS が要求するよりも短いログ保持期間を設定することによって引き起こされる問題は、DTS Service-Level Agreement (SLA) の対象外です。

  • ソースデータベース内のテーブルで Change Data Capture (CDC) を有効にする必要がある場合、以下の条件を満たす必要があります。そうしないと、事前チェックが失敗します。

    • `sys.sysservers` ビューの `srvname` フィールドの値は、`SERVERPROPERTY` 関数の戻り値と同じである必要があります。

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

    • ソースデータベースが Enterprise Edition の場合、SQL Server 2008 以降である必要があります。

    • ソースデータベースが Standard Edition の場合、SQL Server 2016 SP1 以降である必要があります。

    • ソースデータベースが SQL Server 2017 (Standard または Enterprise Edition) の場合、バージョンをアップグレードしてください。

  • ソースインスタンスが読み取り専用インスタンスの場合、DDL 操作は同期できません。

  • ソースデータベースが Azure SQL Database の場合、単一の同期インスタンスは 1 つのデータベースのみを同期できます。

  • ソースデータベースが RDS for SQL Server インスタンスの場合、同期インスタンスの安定性を確保するために、TDE (透過的データ暗号化) 機能を無効にしてください。詳細については、「TDE の無効化」をご参照ください。

  • スキーマ同期タスクが実行される前に、ソースデータベース内のストアドプロシージャなどのオブジェクトの名前を変更するために sp_rename コマンドを使用すると、タスクが予期しない結果を生成したり、失敗したりする可能性があります。

    説明

    データベースオブジェクトの名前を変更するには、ALTER コマンドを使用することを推奨します。

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

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • スキーマ同期または完全同期中に、データベースまたはテーブルスキーマを変更する DDL 操作を実行しないでください。そうしないと、同期タスクが失敗します。

    説明

    完全同期中、DTS はソースデータベースをクエリします。これにより、メタデータロックが作成され、ソースデータベースでの DDL 操作がブロックされる可能性があります。

  • ソースデータベースがウェブベースの RDS SQL Server の場合、タスクを設定する際に、SQL Server 増分同期モードソースデータベースのログに基づく増分同期 (ヒープテーブル非対応) に設定する必要があります。

  • 完全データ同期タスクを実行している間は、ソースデータベースのトランザクション処理モードのパラメーター READ_COMMITTED_SNAPSHOT を有効なままにしておくことを推奨します。これにより、共有ロックがデータ書き込みに影響を与えるのを防ぎます。そうでない場合、データ不整合やインスタンス障害などの問題が発生する可能性があります。このような問題は、DTS サービスレベル合意(SLA)の対象外です。

その他の制限事項

  • CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY データの型のデータは同期できません。

  • ターゲットの TIMESTAMP タイプフィールドにデータを書き込めない場合、DTS は完全同期または増分同期をサポートしません。これにより、データ不整合やタスク失敗が発生する可能性があります。

  • 異なるバージョン間でデータを同期する場合、事前に互換性を確認してください。

  • ソースデータベースからトリガーを同期するには、タスクに使用されるデータベースアカウントがターゲットデータベースに対する Owner 権限を持っていることを確認してください。

  • SQL Server 増分同期モード」を「ソースデータベースのログに基づく増分同期 (ヒープテーブル非対応)」に設定した場合、オブジェクト設定 ステージで同期対象のテーブルには、プライマリキー列を含むクラスター化インデックスが必要です。ヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、計算列を含むテーブル、およびスパース列を含むテーブルの同期はサポートされていません。これらの制限は、ハイブリッドログ解析モードでは適用されません。

  • オブジェクト設定」ステージで、「SQL Server 増分同期モード」を「クラスター化テーブルはログ解析で増分同期し、ヒープテーブルの場合は CDC で増分同期します (ハイブリッド式ログ解析)」に設定した場合、以下の制限事項も適用されます。

    • DTS の増分同期は CDC コンポーネントに依存します。ソースデータベースで CDC タスクが正しく実行されていることを確認してください。そうしないと、DTS タスクが失敗します。

    • デフォルトでは、CDC コンポーネントによって保存される増分データは 3 日間保持されます。必要に応じて、exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>; コマンドを使用して保持期間を調整してください。

      説明
      • <time> は分単位の時間を指定します。

      • ソースデータベース内の単一テーブルの 1 日あたりの平均増分変更 SQL ステートメントが 1,000 万を超える場合、<time> を 1440 に設定してください。

    • DTS 増分同期タスクの前提条件モジュールは、ソースデータベースでデータベースレベルおよびテーブルレベルで CDC を有効にします。このプロセス中、SQL Server データベースカーネルの制限により、ソースデータベースが一時的にロックされる可能性があります。

    • 単一の同期タスクで、1,000 を超えるテーブルに対して CDC を有効にしないでください。そうしないと、タスクのレイテンシーが発生したり、不安定になったりする可能性があります。

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

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

      説明
      • Azure SQL Database コンソールで提供される特権アカウント (サーバー管理者) は要件を満たしています。vCore ベースの購入モデルを使用するデータベースの場合、すべての仕様で CDC の有効化がサポートされます。DTU ベースの購入モデルを使用するデータベースの場合、CDC の有効化をサポートするには仕様が S3 以上である必要があります。

      • Amazon RDS for SQL Server の特権アカウントは要件を満たしており、ストアドプロシージャのデータベースレベル CDC の有効化をサポートしています。

      • クラスター化列ストアインデックスを持つテーブルでは CDC を有効にできません。

      • DTS 増分同期タスクの前提条件モジュールは、ソースデータベースでデータベースレベルおよびテーブルレベルで CDC を有効にします。このプロセス中、SQL Server データベースカーネルの制限により、ソースデータベースが一時的にロックされる可能性があります。

    • DTS はソースデータベース内の各テーブルの CDC インスタンスをポーリングして増分データを取得します。したがって、ソースデータベースから 1,000 を超えるテーブルを同期しないでください。そうしないと、タスクのレイテンシーが発生したり、不安定になったりする可能性があります。

    • デフォルトでは、CDC コンポーネントによって保存される増分データは 3 日間保持されます。必要に応じて、exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>; コマンドを使用して保持期間を調整してください。

    • 説明
      • <time> は分単位の時間を指定します。

      • ソースデータベース内の単一テーブルの 1 日あたりの平均増分変更 SQL ステートメントが 1,000 万を超える場合、<time> を 1440 に設定してください。

    • 列の追加または削除操作を連続して実行すること (1 分以内に 2 回を超える DDL 操作の追加または削除) はサポートされていません。そうしないと、タスクが失敗する可能性があります。

    • ソースデータベース内の CDC インスタンスを変更しないでください。そうしないと、タスクが失敗したり、データ損失が発生したりする可能性があります。

  • 増分データ同期の正確なレイテンシーを確保するために、DTS は以下の操作を実行します。「増分同期のためにソースログを解析する」モードでは、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 も有効にします。CDC が有効になっているテーブルのデータ変更量は、1 秒あたりのレコード数 (RPS) で 1,000 を超えてはなりません。

  • データを同期する前に、ソースおよびターゲットデータベースのパフォーマンスを評価してください。オフピーク時間帯にデータを同期してください。そうしないと、初期完全同期が両方のデータベースの読み取り/書き込みリソースを消費し、データベース負荷が増加する可能性があります。

  • 初期完全同期は同時 INSERT 操作を実行するため、ターゲットデータベースでテーブルの断片化が発生します。その結果、初期完全同期完了後、ターゲットインスタンスの表領域はソースインスタンスの表領域よりも大きくなります。

  • DTS 同期中、DTS 以外のソースからターゲットデータベースにデータを書き込まないでください。これにより、ソースデータベースとターゲットデータベース間でデータ不整合が発生する可能性があります。たとえば、DMS を使用してオンライン DDL 操作を実行している間に、別のソースからターゲットデータベースにデータが書き込まれると、ターゲットデータベースでデータ損失が発生する可能性があります。

  • 同期インスタンスの再インデックスはサポートされていません。この操作により、タスクが失敗したり、データ損失につながる可能性があります。

    説明

    CDC が有効になっているテーブルのプライマリキーに関連する変更はサポートされていません。

  • 1 つの同期タスクで CDC が有効化されたテーブルの数が、DTS がサポートする CDC が有効になっているテーブルの最大数の制限 に設定された値を超える場合、事前チェックは失敗します。

  • CDC が有効になっているテーブルの単一フィールドが 64 KB を超えるデータを格納する必要がある場合、事前に exec sp_configure 'max text repl size', -1; コマンドを実行してソースデータベースの構成を調整する必要があります。

    説明

    デフォルトでは、CDC タスクは単一フィールドに対して最大 64 KB を処理できます。

  • 増分同期の場合、ターゲットデータベースで有効化されたトリガーと外部キーを無効にしてください。そうしないと、同期タスクが失敗します。

  • 同期オブジェクトを変更する機能を使用するには、データベースを削除することはできません。

  • 複数の DTS インスタンスが同じ SQL Server データベースをソースとして使用する場合、それらの増分データ取り込みモジュールは互いに独立しています。

  • タスクが失敗した場合、DTS サポート担当者が 8 時間以内に復元を試みます。復元中、タスクを再起動したり、パラメーターを調整したりする場合があります。

    説明

    データベースパラメーターではなく、DTS タスクパラメーターのみが変更されます。調整される可能性のあるパラメーターには、「インスタンスパラメーターの変更」にリストされているものが含まれます。

  • SQL Server は商用、クローズドソースデータベースです。そのログ形式には、DTS が増分 CDC と解析を実行する際に避けられない問題を引き起こす可能性のある特性があります。本番環境で SQL Server ソースからの増分同期または移行同期に DTS を使用する前に、包括的な概念実証 (POC) を実行してください。POC は、すべてのビジネス変更タイプ、テーブルスキーマ調整、およびピーク時のストレステストをカバーする必要があります。SQL Server のログ形式は予測不能な場合があります。DTS が効率的かつ安定して実行されるように、本番ビジネスロジックが POC でテストしたものと一致していることを確認してください。

特殊なケース

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

課金

同期タイプ

料金

スキーマ同期と完全データ同期

無料です。

増分同期

有料です。詳細については、「課金の概要」をご参照ください。

サポートされている同期トポロジ

  • 一方向 1 対 1 同期

  • 一方向 1 対多同期

  • 一方向カスケード同期

  • 一方向多対 1 同期

各同期トポロジの概要と注意事項については、「データ同期トポロジ」をご参照ください。

サポートされている SQL 操作

操作タイプ

SQL 操作

DML

INSERT, UPDATE, DELETE

説明

ラージオブジェクトのみを更新する UPDATE ステートメントはサポートされていません。

DDL

  • CREATE TABLE

  • ALTER TABLE

    ADD COLUMN および DROP COLUMN のみを含みます。

  • DROP TABLE

  • CREATE INDEX, DROP INDEX

説明
  • トランザクション DDL 操作はサポートされていません。たとえば、複数の列を追加する単一の SQL ステートメントや、DDL と DML 操作の両方を含む単一の SQL ステートメントは、データ損失を引き起こす可能性があります。

  • カスタムタイプを含む DDL 操作はサポートされていません。

  • オンライン DDL 操作はサポートされていません。

  • 予約キーワードを属性名として使用する DDL 操作はサポートされていません。

  • システムストアドプロシージャによって実行される DDL 操作はサポートされていません。

  • TRUNCATE TABLE 操作はサポートされていません。

  • 関数を含むパーティションとテーブル定義はサポートされていません。

操作手順

  1. ターゲットリージョンの同期タスクリストページに移動します。以下の 2 つの方法のいずれかを使用できます。

    DTS コンソールから

    1. Data Transmission Service (DTS) コンソールにログインします。

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

    3. ページ左上隅で、同期インスタンスが配置されているリージョンを選択します。

    DMS コンソールから

    説明

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

    1. Data Management (DMS) にログインします。

    2. 上部のメニューバーで、データ + AI > データ伝送(DTS) > データ同期 を選択します。

    3. [データ同期タスク] の右側で、同期インスタンスが配置されているリージョンを選択します。

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

  3. ソースおよびターゲットデータベースを構成します。

    警告

    ソースおよびターゲットインスタンスを選択した後、ページ上部に表示される制限を注意深くお読みください。制限に従わない場合、タスクが失敗したり、データ不整合が発生したりする可能性があります。

    カテゴリ

    構成

    説明

    なし

    タスク名

    DTS はタスク名を自動的に生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。

    ソースデータベース

    既存の接続情報の選択

    • システムに追加済み (新規作成または保存済み) のデータベースインスタンスを使用するには、ドロップダウンリストからデータベースインスタンスを選択します。データベース情報は自動的に構成されます。

      説明

      DMS コンソールでは、この設定項目は DMS データベースインスタンスの選択 という名称です。

    • データベースインスタンスをシステムに追加していない場合、または既に追加されているインスタンスを使用する必要がない場合は、以下のデータベース情報を手動で構成してください。

    データベースタイプ

    [SQL Server] を選択します。

    アクセス方法

    [クラウドインスタンス] を選択します。

    インスタンスリージョン

    ソース RDS for SQL Server インスタンスが配置されているリージョンを選択します。

    Instance ID

    ソース RDS for SQL Server インスタンスの ID を選択します。

    データベースアカウント

    ソース RDS for SQL Server インスタンスのデータベースアカウントを入力します。このアカウントは、移行対象オブジェクトに対するオーナー権限を持っている必要があります。管理権限を持つアカウントはこの要件を満たします。

    データベースパスワード

    データベースアカウントに対応するパスワードを入力します。

    暗号化

    必要に応じて、非暗号化 または SSL 暗号化 を選択します。

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

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

    宛先データベース

    既存の接続情報の選択

    • システムに追加済み (新規作成または保存済み) のデータベースインスタンスを使用するには、ドロップダウンリストからデータベースインスタンスを選択します。データベース情報は自動的に構成されます。

      説明

      DMS コンソールでは、この設定項目の名前は DMS データベースインスタンスの選択 です。

    • データベースインスタンスをシステムに追加していない場合、または既に追加されているインスタンスを使用する必要がない場合は、以下のデータベース情報を手動で構成してください。

    データベースタイプ

    [SQL Server] を選択します。

    アクセス方法

    [クラウドインスタンス] を選択します。

    インスタンスリージョン

    ターゲット RDS for SQL Server インスタンスが配置されているリージョンを選択します。

    Instance ID

    ターゲット RDS for SQL Server インスタンスの ID を選択します。

    データベースアカウント

    ターゲット RDS for SQL Server インスタンスのデータベースアカウントを入力します。このアカウントは、移行対象オブジェクトに対するオーナー権限を持っている必要があります。

    データベースパスワード

    データベースアカウントに対応するパスワードを入力します。

    暗号化

    必要に応じて非暗号化またはSSL 暗号化を選択します。

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

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

  4. 構成が完了したら、ページの下部にある接続をテストして続行をクリックします。

    説明
    • DTS サーバーの IP アドレス CIDR ブロックが、ソースおよびターゲットデータベースのセキュリティ設定に追加され、DTS サーバーからのアクセスが許可されていることを確認してください。これは自動または手動で実行できます。詳細については、「DTS サーバーの IP アドレス CIDR ブロックをホワイトリストに追加する」をご参照ください。

    • ソースまたはターゲットデータベースが自己管理データベースである場合 (アクセス方法Alibaba Cloud インスタンス ではない)、DTS サーバーの CIDR ブロック ダイアログボックスで 接続テスト をクリックする必要もあります。

  5. タスクオブジェクトを構成します。

    1. オブジェクト設定 ページで、同期するオブジェクトを設定します。

      構成

      説明

      同期タイプ

      増分データ同期 を選択すると、デフォルトで スキーマ同期完全データ同期 も選択する必要があります。事前チェックが完了すると、DTS はソースインスタンスから移行先クラスターに、選択したオブジェクトのフルデータ同期を実行します。これが、後続の増分同期のベースラインデータになります。

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

      必要に応じて、トリガーを同期する方法を選択します。同期対象オブジェクトにトリガーが含まれていない場合、この項目を構成する必要はありません。詳細については、「トリガーを同期または移行する方法を構成する」をご参照ください。

      説明

      この項目は、スキーマ同期同期タイプ で選択されている場合にのみ利用可能です。

      SQL Server 増分同期モード

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

        • 利点:

          • ソースデータベース内のヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、および計算列のあるテーブルのシナリオをサポートします。

          • 高いリンク安定性。このモードは完全な DDL ステートメントを取得でき、DDL シナリオを包括的にサポートします。

        • 欠点:

          • DTS はソースデータベースに dts_cdc_sync_ddl トリガー、dts_sync_progress ハートビートテーブル、および dts_cdc_ddl_history DDL ストレージテーブルを作成します。また、データベースレベルおよび一部のテーブルで CDC を有効にします。

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

            説明

            geometry、geography、または hierarchyid タイプを含むテーブルは CDC の有効化をサポートしていません。

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

        • 利点:

          このモードはソースデータベースに対して非侵入型です。

        • 欠点:

          ソースデータベース内のヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、または計算列のあるテーブルのシナリオはサポートしていません。

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

        • 利点:

          • ソースデータベースが Amazon RDS for SQL Server、Azure SQL Database、Azure SQL Managed Instance、Azure SQL Server on Virtual Machine、または Google Cloud SQL for SQL Server の場合、完全同期と増分同期をサポートします。

          • このモードは SQL Server のネイティブ Change Data Capture (CDC) コンポーネントを使用して増分データを取得します。これにより、増分同期がより安定し、ネットワーク帯域幅の消費が少なくなります。

        • 欠点:

          • DTS インスタンスが使用するソースデータベースアカウントには、CDC を有効にする権限が必要です。増分データ同期には約 10 秒の遅延があります。

          • 複数のデータベースとテーブルを同期するシナリオでは、安定性とパフォーマンスの問題のリスクがある可能性があります。

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

      必要に応じて、現在の同期インスタンスで CDC を有効にできるテーブルの最大数を設定します。デフォルト値は 1000 です。

      説明

      この設定項目は、SQL Server 増分同期モードソースデータベースのログに基づく増分同期 (ヒープテーブル非対応) に設定されている場合は利用できません。

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

      • エラーの事前チェックと報告: ターゲットデータベース内に同じ名前のテーブルが存在するかどうかをチェックします。同じ名前のテーブルが存在しない場合、事前チェックは成功します。同じ名前のテーブルが存在する場合、事前チェックは失敗し、データ同期タスクは開始されません。

        説明

        ターゲットデータベース内の同じ名前のテーブルを削除または名前変更できない場合は、別のテーブル名にマッピングできます。詳細については、「単一のデータベース、テーブル、または列をマッピングする」をご参照ください。

      • エラーを無視して続行: ターゲットデータベース内の重複するテーブル名のチェックをスキップします。

        警告

        エラーを無視して続行 を選択すると、データ不整合が発生し、ビジネスにリスクをもたらす可能性があります。例:

        • テーブルスキーマが同じで、ターゲットデータベース内のレコードがソースデータベース内のレコードと同じプライマリキーまたは一意キー値を持っている場合:

          • 完全同期中、DTS はターゲットクラスター内のレコードを保持します。ソースデータベースからの対応するレコードは同期されません。

          • 増分同期中、ソースデータベースからのレコードはターゲットデータベース内のレコードを上書きします。

        • テーブルスキーマが異なる場合、初期データ同期が失敗する可能性があります。これにより、部分的な列データのみが同期されるか、完全な同期失敗が発生する可能性があります。注意して進めてください。

      ソースオブジェクト

      ソースオブジェクト ボックスで、同期するオブジェクトをクリックし、次に 向右 をクリックして 選択中のオブジェクト ボックスに移動します。

      説明

      データベース、テーブル、列を同期オブジェクトとして選択できます。テーブルまたは列を選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトはターゲットデータベースに同期されません。

      選択中のオブジェクト

      説明
      • データベースレベルまたはテーブルレベルで同期する SQL 操作を選択するには、選択中のオブジェクト ボックス内のオブジェクトを右クリックし、表示されるダイアログボックスで目的の SQL 操作を選択します。

      • WHERE 句を使用してデータをフィルターするには、選択中のオブジェクト ボックス内の同期対象のテーブルを右クリックし、表示されるダイアログボックスでフィルター条件を設定します。フィルター条件の設定方法について詳しくは、「フィルター条件の設定」をご参照ください。

      • オブジェクト名マッピング機能を使用すると、マッピングされたオブジェクトに依存する他のオブジェクトが同期に失敗する可能性があります。

    2. [詳細設定へ] をクリックして、高度なパラメーターを設定します。

      構成

      説明

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

      デフォルトでは、DTS は共有クラスターでタスクをスケジュールするため、クラスターを選択する必要はありません。より安定したパフォーマンスを得るには、DTS 同期タスクを実行するために専用クラスターを購入できます。詳細については、「DTS 専用クラスターとは何ですか?」をご参照ください。

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

      同期タスクが開始された後、ソースまたはターゲットデータベースへの接続が失敗した場合、DTS はエラーを報告し、すぐに接続のリトライを開始します。デフォルトのリトライ期間は 720 分です。10 分から 1,440 分の範囲でカスタムリトライ期間を指定することもできます。期間を 30 分以上に設定することを推奨します。DTS が指定された期間内にデータベースに正常に再接続した場合、同期タスクは自動的に再開されます。そうでない場合、タスクは失敗します。

      説明
      • 同じソースまたはターゲットを共有する複数の DTS インスタンス (例: インスタンス A とインスタンス B) があり、インスタンス A のネットワークリトライ時間を 30 分、インスタンス B のネットワークリトライ時間を 60 分に設定した場合、両方で短い方の 30 分が使用されます。

      • DTS は接続リトライ期間中もタスク実行時間に対して課金するため、ビジネスニーズに基づいてリトライ期間をカスタマイズするか、ソースおよびターゲットデータベースインスタンスがリリースされた後、できるだけ早く DTS インスタンスをリリースすることを推奨します。

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

      同期タスクが開始された後、ソースまたはターゲットデータベースで接続以外の問題 (DDL または DML 実行例外など) が発生した場合、DTS はエラーを報告し、すぐに連続リトライ操作を開始します。デフォルトのリトライ期間は 10 分です。1 分から 1,440 分の範囲でリトライ期間をカスタマイズすることもできます。10 分以上に設定することを推奨します。設定されたリトライ期間内に関連する操作が成功した場合、同期タスクは自動的に再開されます。そうでない場合、タスクは失敗します。

      重要

      移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 の値は、失敗した接続の再試行時間 の値より小さくする必要があります。

      完全同期レートを制限するかどうか

      完全同期の段階では、DTS はソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを消費するため、データベースの負荷が増加する可能性があります。ソースデータベースとターゲットデータベースの負荷を軽減するには、1 秒あたりのソースデータベースのクエリ率 QPS1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS パラメーターを設定することで、完全同期タスクのレート制限を設定できます。

      説明
      • この設定項目は、同期タイプ完全データ同期 に設定されている場合にのみ利用可能です。

      • 同期インスタンスの実行後、完全同期レートを調整することもできます。

      増分同期率を制限するかどうか

      また、増分同期タスクの速度制限を設定することもできます。ターゲットデータベースへの負荷を軽減するために、1 秒あたりの増分同期の行数 RPS および 1 秒あたりの増分同期データ量 (MB) BPS を設定します。

      環境タグ

      必要に応じて、インスタンスを識別するための環境タグを選択できます。この例では選択は不要です。

      ETL 機能の設定

      抽出・変換・書き出し (ETL) 機能を有効にするかどうかを選択します。詳細については、「ETL とは何ですか?」をご参照ください。有効な値:

      監視アラート

      アラートを構成するかどうかを指定します。同期が失敗した場合、またはレイテンシーが指定されたしきい値を超えた場合、アラート連絡先に通知が送信されます。

    3. [次: データ検証] をクリックして、データ検証タスクを設定します。

      データ検証機能を使用する場合は、構成手順について「データ検証を構成する」をご参照ください。

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

    • このインスタンスの設定に使用する API パラメーターを表示するには、次:タスク設定の保存と事前チェック ボタンにマウスを上に移動し、表示されるバルーンで OpenAPI パラメーターのプレビュー をクリックします。

    • API パラメーターの確認が完了したら、ページの下部にある次:タスク設定の保存と事前チェックをクリックします。

    説明
    • 同期ジョブが開始される前に、DTS は事前チェックを実行します。すべての事前チェック項目が合格した場合にのみ、ジョブを開始できます。

    • 事前チェックが失敗した場合は、失敗した項目の詳細を表示をクリックし、表示される指示に従って問題を修正してから、事前チェックを再実行します。

    • 事前チェックが警告を返す場合:

      • チェック項目が失敗し、無視できない場合は、項目の横にある詳細を表示をクリックします。指示に従って問題を解決し、その後、事前チェックを再度実行します。

      • 無視可能なチェック項目については、アラートの詳細を確認無視OK、および再度事前チェックを実行を順にクリックして、警告をスキップし、事前チェックを再実行できます。警告項目を非表示に選択した場合、データ不整合などの問題が発生し、ビジネスにリスクを及ぼす可能性があります。

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

    1. 成功率 が 100% になったら、次:インスタンスの購入 をクリックします。

    2. [購入] ページで、データ同期インスタンスの課金方法とリンク仕様を選択します。次の表では、これらのパラメーターについて詳しく説明しています。

      カテゴリ

      パラメーター

      説明

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

      Billing Method

      • Subscription: インスタンス作成時に支払います。長期的なニーズに適しており、従量課金よりも費用対効果が高いです。サブスクリプション期間が長いほど、割引率が高くなります。

      • Pay-as-you-go: 時間単位で課金されます。短期的なニーズに適しています。使用後すぐにインスタンスをリリースしてコストを節約できます。

      Resource Group Configuration

      インスタンスが属するリソースグループ。デフォルトはデフォルトのリソースグループです。詳細については、「Resource Management とは何ですか?」をご参照ください。

      Link Specification

      DTS は異なるパフォーマンスレベルの同期仕様を提供します。同期リンク仕様は同期レートに影響します。ビジネスシナリオに基づいて仕様を選択できます。詳細については、「データ同期リンク仕様」をご参照ください。

      Subscription Duration

      サブスクリプションモードでは、サブスクリプションインスタンスの期間と数量を選択します。1 ヶ月から 9 ヶ月の月額サブスクリプション、または 1 年、2 年、3 年、5 年の年間サブスクリプションを選択できます。

      説明

      このオプションは、課金方法が サブスクリプション の場合にのみ利用できます。

    3. 構成を完了したら、Data Transmission Service (従量課金) 利用規約を読み取り、選択してください。

    4. [購入して開始]をクリックします。[OK]ダイアログボックスで、[OK]をクリックします。

      [Data Synchronization] ページでタスクの進行状況を表示できます。

CDC ステータスを確認する

以下の情報を使用して、CDC ステータスを確認したり、CDC を無効にしたりできます。

説明

以下の SQL ステートメントを使用するには、変数をご利用の変数に置き換えてください。

  • CDC ステータスを確認します。

    SELECT name, is_cdc_enabled FROM sys.databases WHERE name = '<your db name>';
  • CDC タスクステータスを確認します。

    SELECT database_name(database_id), job_type FROM [msdb].[dbo].[cdc_jobs] WHERE database_id = DB_ID('<your db name>');
  • CDC が正しく機能しているか確認します。

    • ディスク領域の使用状況を確認します。

      SELECT * FROM sys.dm_db_log_space_usage;
    • エージェント サービスが正しく動作しているかどうかを確認します。詳細については、「SQL Server エージェント」をご参照ください。

    • CDC がデータを正しくスキャンしているか確認します。正しくない場合、DTS タスクがリトライまたは停止する可能性があります。

      SELECT * FROM sys.dm_cdc_log_scan_sessions;
  • データベースレベルで CDC を無効にします。

    USE [<your db name>];
    
    DROP TRIGGER [dts_cdc_sync_ddl] ON database; 
    # 存在しない場合は無視する (最初にトリガーを削除する必要がある)
    
    EXECUTE [sys].[sp_cdc_disable_db];