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

Data Transmission Service:SQL Server がソースデータベースである場合のデータ同期の考慮事項と制限事項

最終更新日:Dec 03, 2025

このトピックでは、自己管理型 SQL Server や RDS for SQL Server などの SQL Server データベースをデータ同期のソースとして使用する場合の考慮事項と制限事項について説明します。同期タスクが正常に実行されるように、タスクを設定する前に、この情報をご確認ください。

SQL Server ソースデータベースの同期ソリューションの概要

同期タスクの考慮事項と制限事項を確認してください。

説明

デフォルトでは、Data Transformation Service (DTS) はターゲットデータベースの外部キー制約をキャンセルします。このため、ソースデータベースでのカスケードや削除などの操作は、以下のターゲットデータベースには同期されません:

  • SQL Server

  • MySQL (RDS for MySQL および自己管理型 MySQL)

  • PolarDB for MySQL

  • AnalyticDB for MySQL

  • AnalyticDB for PostgreSQL

  • Alibaba Cloud DataHub

SQL Server インスタンス間の同期

以下の注意事項と制限事項が適用されます。

タイプ

説明

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

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

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

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

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

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

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

  • データログ:

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

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

  • ソースデータベースのテーブルで変更データキャプチャ (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 つの同期インスタンスで同期できるデータベースは 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 つの同期タスクで、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,000 レコード/秒 (RPS) を超えてはなりません。

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

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

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

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

    説明

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

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

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

    説明

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

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

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

  • 複数の同期インスタンスが同じ 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 アカウントを作成します。タスクの実行中は、このアカウントを削除したり、そのパスワードを変更したりしないでください。そうしないと、タスクが失敗する可能性があります。詳細については、「システムアカウント」をご参照ください。

RDS SQL Server から MySQL への同期

ターゲットデータベースが自己管理型 MySQL や RDS for MySQL データベースなどの MySQL インスタンスである場合、以下の注意事項と制限事項が適用されます:

タイプ

説明

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

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

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

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

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

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

  • データログ:

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

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

  • ソースデータベースのテーブルで変更データキャプチャ (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 つの同期インスタンスで同期できるデータベースは 1 つだけです。

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

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

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • スキーマ同期タスクが実行される前に、ソースデータベースでストアドプロシージャなどのオブジェクトの名前を sp_rename コマンドで変更すると、タスクが予期しない結果を生成したり、失敗したりする場合があります。

    説明

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

  • 初期スキーマ同期および初期完全データ同期中は、データベースまたはテーブルのスキーマを変更するデータ定義言語 (DDL) 操作を実行しないでください。そうしないと、データ同期タスクは失敗します。

    説明

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

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

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

その他の制限事項

  • 同期オブジェクトの要件:

    • 初期スキーマ同期は、データベース、スキーマ、およびテーブルでサポートされています。

    • CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY、および CREATE TYPE コマンドで作成されたユーザー定義型のデータは同期できません。

    • 次のオブジェクトは同期できません:PROCEDURE、FUNCTION、TRIGGER、DATATYPE、SYNONYM、CATALOG、PLAN_GUIDE、および SEQUENCE。

  • 同期するデータに、珍しい文字や絵文字など、4 バイトストレージを必要とするコンテンツが含まれている場合、ターゲットデータベースとテーブルは utf8mb4 文字セットを使用する必要があります。

    説明

    DTS でスキーマ同期を行う場合は、ターゲットデータベースでインスタンスレベルのパラメーター character_set_server を utf8mb4 に設定する必要があります。

  • オブジェクト設定 段階で 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 つの同期タスクで、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 インスタンスを変更しないでください。そうしないと、タスクが失敗したり、データが失われたりする可能性があります。

  • 複雑な DDL 操作の同期はサポートされていません。

  • 増分データ同期の正確なレイテンシを確保するために、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,000 レコード/秒 (RPS) を超えてはなりません。

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

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

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

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

    説明

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

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

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

    説明

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

  • DDL 文がターゲットデータベースへの書き込みに失敗した場合、DTS タスクは実行を継続します。タスクログで失敗した DDL 文を確認してください。タスクログの表示方法の詳細については、「タスクログのクエリ」をご参照ください。

  • 大文字と小文字のみが異なる列名を持つフィールドを同じターゲット MySQL データベースのテーブルに書き込むと、同期結果が期待どおりにならない場合があります。これは、MySQL データベースの列名が大文字と小文字を区別しないためです。

  • データ同期が完了し、インスタンスの ステータス完了 になったら、analyze table <table_name> コマンドを実行して、すべてのデータが移行先テーブルに書き込まれていることを確認することをお勧めします。 たとえば、移行先の MySQL データベースで HA スイッチオーバーがトリガーされた後、データがメモリにのみ書き込まれ、データ損失につながる可能性があります。

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

  • 複数の同期インスタンスが同じ 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 アカウントを作成します。タスクの実行中は、このアカウントを削除したり、パスワードを変更したりしないでください。そうしないと、タスクが失敗する可能性があります。詳細については、「システムアカウント」をご参照ください。

SQL Server から PolarDB for MySQL へのデータ同期

以下の注意事項と制限事項が適用されます。

タイプ

説明

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

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

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

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

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

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

  • データログ:

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

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

  • ソースデータベースのテーブルで変更データキャプチャ (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 つの同期インスタンスで同期できるデータベースは 1 つだけです。

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

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

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • スキーマ同期タスクが実行される前に、ソースデータベースで sp_rename コマンドを使用してストアドプロシージャなどのオブジェクト名を変更した場合、タスクで予期しない結果が生じるか、タスクが失敗する可能性があります。

    説明

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

  • 初期スキーマ同期および初期完全データ同期中は、データベースまたはテーブルのスキーマを変更するデータ定義言語 (DDL) 操作を実行しないでください。そうしないと、データ同期タスクは失敗します。

    説明

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

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

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

その他の制限事項

  • 同期オブジェクトの要件:

    • 初期スキーマ同期をサポートするオブジェクトには、データベース、スキーマ、テーブルが含まれます。

    • 以下のデータの型のデータは同期できません: CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY、および CREATE TYPE コマンドで作成されたユーザー定義型。

    • 次のオブジェクトは同期できません:PROCEDURE、FUNCTION、TRIGGER、DATATYPE、SYNONYM、CATALOG、PLAN_GUIDE、および SEQUENCE。

  • 同期するデータに、珍しい文字や絵文字など、4 バイトストレージを必要とするコンテンツが含まれている場合、ターゲットデータベースとテーブルは utf8mb4 文字セットを使用する必要があります。

    説明

    DTS を使用してスキーマ同期を行う場合、ターゲットデータベースでインスタンスレベルのパラメーター character_set_server を utf8mb4 に設定する必要があります。

  • オブジェクト設定 ステージで 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 つの同期タスクで、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 インスタンスを変更しないでください。そうしないと、タスクが失敗したり、データが失われたりする可能性があります。

  • 複雑な DDL 操作の同期はサポートされていません。

  • 増分データ同期の正確なレイテンシを確保するために、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,000 レコード/秒 (RPS) を超えてはなりません。

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

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

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

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

    説明

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

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

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

    説明

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

  • DDL 書き込み操作がターゲットデータベースで失敗した場合、DTS タスクは実行を継続します。タスクログで失敗した DDL 文を確認してください。タスクログの表示方法の詳細については、「タスクログのクエリ」をご参照ください。

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

  • 複数の同期インスタンスが同じ 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 アカウントを作成します。タスクの実行中に、このアカウントを削除したり、パスワードを変更したりしないでください。そうしないと、タスクが失敗する可能性があります。詳細については、「システムアカウント」をご参照ください。

SQL Server から AnalyticDB for MySQL への同期

タイプ

説明

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

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

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

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

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

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

  • データログ:

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

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

  • ソースデータベースのテーブルで変更データキャプチャ (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 つの同期インスタンスで同期できるデータベースは 1 つだけです。

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

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

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • スキーマ同期タスクの実行前に sp_rename コマンドを使用して、ソースデータベース内のストアドプロシージャなどのオブジェクト名を変更すると、そのタスクで予期しない結果が生じたり、失敗したりする可能性があります。

    説明

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

  • 初期スキーマ同期および初期完全データ同期中は、データベースまたはテーブルのスキーマを変更するデータ定義言語 (DDL) 操作を実行しないでください。そうしないと、データ同期タスクは失敗します。

    説明

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

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

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

その他の制限事項

  • 同期オブジェクトの要件:

    • 初期スキーマ同期をサポートするオブジェクトは、スキーマ、テーブル、ビュー、関数、およびプロシージャです。

      警告

      このシナリオでは異種データベース間のデータ同期が含まれるため、データ型を 1 対 1 でマッピングすることはできません。これにより、タスクが失敗したり、データが失われたりする可能性があります。データ型のマッピングがビジネスに与える影響を慎重に評価してください。詳細については、「初期スキーマ同期のデータ型マッピング」をご参照ください。

    • 次のオブジェクトは初期スキーマ同期をサポートしていません:アセンブリ、サービスブローカー、フルテキストインデックス、フルテキストカタログ、分散スキーマ、分散関数、CLR ストアドプロシージャ、CLR スカラー関数、CLR テーブル値関数、内部テーブル、システムオブジェクト、および集計関数。

    • 以下のデータ型のデータは同期できません:CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY、および CREATE TYPE コマンドで作成されたユーザー定義型。

    • 計算列を含むテーブルは同期できません。

  • ターゲットデータベースにカスタムプライマリキーを設定するか、テーブル・列設定 ステップで プライマリキー列の追加 を設定する必要があります。そうしないと、データ同期が失敗する可能性があります。

  • オブジェクト設定 段階で 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 つの同期タスクで、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,000 レコード/秒 (RPS) を超えてはなりません。

  • AnalyticDB for MySQL の制限により、ターゲットの AnalyticDB for MySQL クラスターのノードのディスク領域使用率が 80% を超えると、ターゲットデータベースへのデータ書き込みのパフォーマンスが低下し、DTS タスクのレイテンシが発生します。使用率が 90% を超えると、ターゲットデータベースにデータを書き込むことができなくなり、DTS タスクは異常になります。開始する前に、同期するオブジェクトに基づいて必要な領域を見積もり、ターゲットクラスターに十分なストレージ領域があることを確認してください。

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

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

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

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

    説明

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

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

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

    説明

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

  • DDL 文がターゲットデータベースへの書き込みに失敗した場合、DTS タスクは実行を継続します。タスクログで失敗した DDL 文を確認してください。タスクログの表示方法の詳細については、「タスクログのクエリ」をご参照ください。

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

  • DTS タスクの実行中にターゲットの AnalyticDB for MySQL 3.0 クラスターがバックアップされている場合、タスクは失敗します。

  • 複数の同期インスタンスが同じ 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 アカウントを作成します。タスクの実行中に、このアカウントを削除したり、パスワードを変更したりしないでください。そうしないと、タスクが失敗する可能性があります。詳細については、「システムアカウント」をご参照ください。

SQL Server データを AnalyticDB for PostgreSQL に同期する

以下の考慮事項と制限事項が適用されます:

タイプ

説明

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

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

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

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

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

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

  • データログ:

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

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

  • ソースデータベースのテーブルで変更データキャプチャ (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 つの同期インスタンスで同期できるデータベースは 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 操作がブロックされる可能性があります。

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

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

その他の制限事項

  • 同期オブジェクトの要件:

    • 初期スキーマ同期でサポートされるオブジェクトには、スキーマ、テーブル、ビュー、関数、プロシージャが含まれます。

      警告

      このシナリオでは異種データベース間のデータ同期が含まれるため、データ型を 1 対 1 でマッピングすることはできません。これにより、タスクが失敗したり、データが失われたりする可能性があります。データ型のマッピングがビジネスに与える影響を慎重に評価してください。詳細については、「初期スキーマ同期のデータ型マッピング」をご参照ください。

    • 次のオブジェクトは初期スキーマ同期でサポートされていません:アセンブリ、サービスブローカー、フルテキストインデックス、フルテキストカタログ、分散スキーマ、分散関数、CLR ストアドプロシージャ、CLR スカラー関数、CLR テーブル値関数、内部テーブル、システムオブジェクト、および集計関数。

    • CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY、および CREATE TYPE コマンドで作成されたユーザー定義型のデータは同期できません。

    • 計算列を含むテーブルの同期はサポートされていません。

    • 次のオブジェクトの同期はサポートされていません:INDEX、VIEW、PROCEDURE、FUNCTION、TRIGGER、FK、INDEX、FULL_TEXT_INDEX、DATATYPE、DEFAULT、SYNONYM、CATALOG、PLAN_GUIDE、DEFAULT_CONSTRAINT、UK、CK、および SEQUENCE。

  • 同期するテーブルにプライマリキーがある場合、ターゲットテーブルのプライマリキー列はソーステーブルのプライマリキー列と同じでなければなりません。同期するテーブルにプライマリキーがない場合、ターゲットテーブルのプライマリキー列は分散キーと同じでなければなりません。

  • ターゲットテーブルの一意キー (プライマリキー列を含む) は、分散キーのすべての列を含んでいる必要があります。

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

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

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

    • exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <時間>;デフォルトでは、CDC コンポーネントによって保存される増分データは 3 日間保持されます。必要に応じて、`exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention=

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

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

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

    • 1 つの同期タスクで、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 を超えるテーブルを同期しないでください。そうしないと、タスクでレイテンシが発生したり、不安定になったりする可能性があります。

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

    • 説明
      • <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,000 レコード/秒 (RPS) を超えてはなりません。

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

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

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

  • テーブルレベルで同期するオブジェクトを選択し、列マッピングを変更できます。列マッピングを使用し、テーブル全体を同期しない場合、またはソーステーブルとターゲットテーブルの構造が異なる場合、ソースには存在するがターゲットには存在しない列のデータは失われます。

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

    説明

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

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

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

    説明

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

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

  • 複数の同期インスタンスが同じ 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 アカウントを作成します。タスクの実行中は、このアカウントを削除したり、パスワードを変更したりしないでください。そうしないと、タスクが失敗する可能性があります。詳細については、「システムアカウント」をご参照ください。

SQL Server から Alibaba Cloud DataHub へのデータ同期

以下の考慮事項と制限事項が適用されます:

タイプ

説明

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

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

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

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

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

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

  • データログ:

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

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

  • ソースデータベースのテーブルで変更データキャプチャ (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) の場合、バージョンをアップグレードしてください。

  • ソースデータベースが Azure SQL Database の場合、1 つの同期インスタンスで同期できるデータベースは 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 操作を実行しないでください。そうしないと、データ同期タスクは失敗します。

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

その他の制限事項

  • 増分データ同期とスキーマ同期のみがサポートされています。完全データ同期はサポートされていません。

  • ターゲットの DataHub の単一の String フィールドの最大長は 2 MB です。

  • 同期オブジェクトの要件:

    • 初期スキーマ同期をサポートするオブジェクトは、スキーマ、テーブル、ビュー、関数、およびプロシージャです。

      警告

      このシナリオでは異種データベース間のデータ同期が含まれるため、データ型が 1 対 1 でマッピングされない場合があります。これにより、タスクの失敗やデータ損失が発生する可能性があります。データ型のマッピングがビジネスに与える影響を慎重に評価してください。詳細については、「初期スキーマ同期のデータ型マッピング」をご参照ください。

    • 次の構造オブジェクトでは、初期スキーマ同期はサポートされていません:アセンブリ、サービスブローカー、フルテキストインデックス、フルテキストカタログ、分散スキーマ、分散関数、CLR ストアドプロシージャ、CLR スカラー関数、CLR テーブル値関数、内部テーブル、システムテーブル、および集計関数。

    • 以下のデータ型のデータは同期できません: CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY、および CREATE TYPE コマンドで作成されたユーザー定義型。

    • 計算列を含むテーブルは同期できません。

    • 次のオブジェクトは同期できません:INDEX、VIEW、PROCEDURE、FUNCTION、TRIGGER、FK、INDEX、FULL_TEXT_INDEX、DATATYPE、DEFAULT、SYNONYM、CATALOG、PLAN_GUIDE、DEFAULT_CONSTRAINT、UK、CK、および SEQUENCE。

  • 増分データ同期の正確なレイテンシを確保するために、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,000 レコード/秒 (RPS) を超えてはなりません。

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

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

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

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

    説明

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

  • 単一の同期タスクで CDC が有効になっているテーブルの数が 1,000 を超える場合、事前チェックは失敗します。

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

    説明

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

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

  • 複数の同期インスタンスが同じ 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 アカウントを作成します。 タスクの実行中は、このアカウントを削除したり、そのパスワードを変更したりしないでください。 そうしないと、タスクが失敗する可能性があります。 詳細については、「システムアカウント」をご参照ください。