SQL データ同期 (プレビュー) を使用して複数のクラウドおよびオンプレミス データベース間でデータを同期するSync data across multiple cloud and on-premises databases with SQL Data Sync (Preview)

SQL データ同期は、Azure SQL Database 上に構築されているサービスであり、選択したデータを複数の SQL データベースや SQL Server インスタンスの間で双方向に同期させることができます。SQL Data Sync is a service built on Azure SQL Database that lets you synchronize the data you select bi-directionally across multiple SQL databases and SQL Server instances.

データ同期は、同期グループの概念に基づいています。Data Sync is based around the concept of a Sync Group. 同期グループは、同期するデータベースのグループです。A Sync Group is a group of databases that you want to synchronize.

同期グループには、次のプロパティがあります。A Sync Group has the following properties:

  • 同期スキーマは、どのデータが同期されるかについて説明します。The Sync Schema describes which data is being synchronized.

  • 同期の方向は、双方向にするか、一方向だけのフローにすることができます。The Sync Direction can be bi-directional or can flow in only one direction. つまり、同期の方向は、"[Hub to Member](ハブからメンバーへ)" または "[Member to Hub](メンバーからハブへ)"、あるいはその両方にすることができます。That is, the Sync Direction can be Hub to Member or Member to Hub, or both.

  • 同期間隔は、同期が発生する頻度です。The Sync Interval is how often synchronization occurs.

  • 競合解決ポリシーは、グループ レベルのポリシーであり、[ハブ側に合わせる][Member wins](メンバー側に合わせる) のどちらかにすることができます。The Conflict Resolution Policy is a group level policy, which can be Hub wins or Member wins.

データ同期は、データを同期するために、ハブとスポークのトポロジを使用します。Data Sync uses a hub and spoke topology to synchronize data. グループ内のいずれかのデータベースを、ハブ データベースとして定義します。You define one of the databases in the group as the Hub Database. 他のデータベースは、メンバー データベースです。The rest of the databases are member databases. 同期は、ハブと個々のメンバー間でのみ発生します。Sync occurs only between the Hub and individual members.

  • ハブ データベースは、Azure SQL データベースにする必要があります。The Hub Database must be an Azure SQL Database.
  • メンバー データベースは、SQL データベース、オンプレミス SQL Server データベース、または Azure 仮想マシン上の SQL Server インスタンスにすることができます。The member databases can be either SQL Databases, on-premises SQL Server databases, or SQL Server instances on Azure virtual machines.
  • 同期データベースには、データ同期のメタデータとログが含まれています。同期データベースは、ハブ データベースと同じリージョンにある Azure SQL データベースである必要があります。The Sync Database contains the metadata and log for Data Sync. The Sync Database has to be an Azure SQL Database located in the same region as the Hub Database. 同期データベースは、お客様が作成し、所有します。The Sync Database is customer created and customer owned.


オンプレミスのデータベースを使っている場合は、ローカル エージェントを構成する必要があります。If you're using an on premises database, you have to configure a local agent.


データ同期を使用する場合When to use Data Sync

データ同期は、いくつかの Azure SQL データベースや SQL Server データベースにわたるデータを最新の状態に保つ必要がある場合に便利です。Data Sync is useful in cases where data needs to be kept up-to-date across several Azure SQL Databases or SQL Server databases. 以下に、データ同期の主なユース ケースを示します。Here are the main use cases for Data Sync:

  • ハイブリッド データ同期: データ同期を使用すると、オンプレミス データベースと Azure SQL データベースの間でデータの同期を維持し、ハイブリッド アプリケーションを実現できます。Hybrid Data Synchronization: With Data Sync, you can keep data synchronized between your on-premises databases and Azure SQL Databases to enable hybrid applications. この機能は、クラウドへの移行を検討していて、一部のアプリケーションを Azure に配置しようとしているお客様にとって利点となる場合があります。This capability may appeal to customers who are considering moving to the cloud and would like to put some of their application in Azure.

  • 分散アプリケーション: 多くの場合、ワークロードが異なるのであればデータベースも分離しておくと便利です。Distributed Applications: In many cases, it's beneficial to separate different workloads across different databases. たとえば、大規模な運用データベースがあり、このデータに対するレポートまたは分析ワークロードを実行する必要がある場合は、この追加のワークロードのために 2 つ目のデータベースを用意すると便利です。For example, if you have a large production database, but you also need to run a reporting or analytics workload on this data, it's helpful to have a second database for this additional workload. そうすることで、運用ワークロードのパフォーマンスへの影響を最低限にすることができます。This approach minimizes the performance impact on your production workload. データ同期を使えば、この 2 つのデータベースの同期を維持することができます。You can use Data Sync to keep these two databases synchronized.

  • グローバル分散アプリケーション: 多くの企業は、複数のリージョン、さらには複数の国にわたって展開しています。Globally Distributed Applications: Many businesses span several regions and even several countries. ネットワーク待ち時間を最小限にするには、データは最寄りのリージョンに配置するのが一番です。To minimize network latency, it's best to have your data in a region close to you. データ同期では、世界中のリージョンのデータベースを簡単に同期させることができます。With Data Sync, you can easily keep databases in regions around the world synchronized.

データ同期は次のシナリオには適していません。Data Sync is not appropriate for the following scenarios:

  • ディザスター リカバリーDisaster Recovery

  • 読み取りスケールRead Scale


  • オンプレミス SQL Server から Azure SQL Database への移行Migration from on-premises SQL Server to Azure SQL Database

データ同期のしくみHow does Data Sync work?

  • データ変更の追跡: データ同期では、挿入、更新、および削除の 3 種類のトリガーを使用して変更を追跡します。Tracking data changes: Data Sync tracks changes using insert, update, and delete triggers. 変更はユーザー データベースのサイド テーブルに記録されます。The changes are recorded in a side table in the user database.

  • データの同期: データ同期は、ハブとスポークのモデルで設計されています。Synchronizing data: Data Sync is designed in a Hub and Spoke model. ハブは、各メンバーと個別に同期されます。The Hub syncs with each member individually. ハブからの変更がメンバーにダウンロードされ、次にメンバーからの変更がハブにアップロードされます。Changes from the Hub are downloaded to the member and then changes from the member are uploaded to the Hub.

  • 競合の解決: データ同期には、競合を解決するために、[ハブ側に合わせる][Member wins](メンバー側に合わせる) という 2 つのオプションが用意されています。Resolving conflicts: Data Sync provides two options for conflict resolution, Hub wins or Member wins.

    • [ハブ側に合わせる] を選択すると、ハブでの変更が常にメンバーでの変更を上書きします。If you select Hub wins, the changes in the hub always overwrite changes in the member.
    • [Member wins](メンバー側に合わせる) を選択すると、メンバーでの変更がハブでの変更を上書きします。If you select Member wins, the changes in the member overwrite changes in the hub. 複数のメンバーがある場合、最終的な値は、どのメンバーが最初に同期されるかによって異なります。If there's more than one member, the final value depends on which member syncs first.

要件と制限Requirements and limitations

一般的な考慮事項General considerations

最終的な一貫性Eventual consistency

データ同期はトリガー ベースであるため、トランザクションの一貫性は保証されません。Since Data Sync is trigger-based, transactional consistency is not guaranteed. Microsoft では、最終的にはすべての変更が行われることと、データ同期でデータ損失が発生しないことを保証しています。Microsoft guarantees that all changes are made eventually and that Data Sync does not cause data loss.

パフォーマンスへの影響Performance impact

データ同期では、挿入、更新、および削除の 3 種類のトリガーを使用して変更を追跡します。Data Sync uses insert, update, and delete triggers to track changes. これにより、ユーザー データベース内に変更追跡のためのサイド テーブルが作成されます。It creates side tables in the user database for change tracking. これらの変更追跡アクティビティは、データベースのワークロードに影響します。These change tracking activities have an impact on your database workload. サービス層を評価し、必要な場合はアップグレードします。Assess your service tier and upgrade if needed.

一般的な要件General requirements

  • 各テーブルには主キーが必要です。Each table must have a primary key. どの行の主キーも値を変更しないでください。Don't change the value of the primary key in any row. 主キーの値を変更する必要がある場合は、行を削除し、新しい主キー値で作成し直してください。If you have to change a primary key value, delete the row and recreate it with the new primary key value.

  • スナップショット分離を有効にする必要があります。Snapshot isolation must be enabled. 詳しくは、「SQL Server でのスナップショット分離」をご覧ください。For more info, see Snapshot Isolation in SQL Server.

一般的な制限事項General limitations

  • テーブルに、主キー以外の ID 列を設けることはできません。A table cannot have an identity column that is not the primary key.

  • 主キーは datetime データ型を持つことはできません。A primary key cannot have the datetime data type.

  • オブジェクト (データベース、テーブル、および列) の名前には、印刷可能な文字のピリオド (.)、左角かっこ ([)、または右角かっこ (]) を使用できません。The names of objects (databases, tables, and columns) cannot contain the printable characters period (.), left square bracket ([), or right square bracket (]).

  • Azure Active Directory 認証はサポートされていません。Azure Active Directory authentication is not supported.

サポートされていないデータ型Unsupported data types

  • FileStreamFileStream


  • XMLSchemaCollection (XML サポート)XMLSchemaCollection (XML supported)

  • Cursor、Timestamp、HierarchyidCursor, Timestamp, Hierarchyid

サービスとデータベースの数量に関する制限Limitations on service and database dimensions

数量Dimensions 制限Limit 対処法Workaround
データベースが属することができる同期グループの最大数。Maximum number of sync groups any database can belong to. 55
1 つの同期グループ内のエンドポイントの最大数Maximum number of endpoints in a single sync group 3030 複数の同期グループを作成するCreate multiple sync groups
1 つの同期グループ内のオンプレミス エンドポイントの最大数。Maximum number of on-premises endpoints in a single sync group. 55 複数の同期グループを作成するCreate multiple sync groups
データベース、テーブル、スキーマ、および列名の文字数Database, table, schema, and column names 名前 1 件あたり 50 文字50 characters per name
同期グループ内のテーブル数Tables in a sync group 500500 複数の同期グループを作成するCreate multiple sync groups
同期グループ内のテーブルの列数Columns in a table in a sync group 1,0001000
テーブルでのデータ行のサイズData row size on a table 24 Mb24 Mb
最小同期間隔Minimum sync interval 5 分5 Minutes

SQL データ同期に関する FAQFAQ about SQL Data Sync

SQL データ同期 (プレビュー) サービスのコストはどれくらいですか?How much does the SQL Data Sync (Preview) service cost?

プレビュー中は、SQL データ同期 (プレビュー) サービス自体に料金はかかりません。During the Preview, there is no charge for the SQL Data Sync (Preview) service itself. ただし、SQL Database インスタンスへの、またはインスタンスからのデータ移動には、データ転送の料金がかかります。However, you still accrue data transfer charges for data movement in and out of your SQL Database instance. 詳しくは、「SQL Database の価格」をご覧ください。For more info, see SQL Database pricing.

データ同期はどのリージョンでサポートされていますか?What regions support Data Sync?

SQL データ同期 (プレビュー) は、すべてのパブリック クラウド リージョンで利用できます。SQL Data Sync (Preview) is available in all public cloud regions.

SQL Database アカウントは必要ですか?Is a SQL Database account required?

はい。Yes. ハブ データベースをホストするには、SQL Database アカウントが必要です。You must have a SQL Database account to host the Hub Database.

データ同期を使用してオンプレミスの SQL Server データのみの間で同期できますか?Can I use Data Sync to sync between SQL Server on-premises databases only?

直接無効にすることはできません。Not directly. しかし、Azure でハブ データベースを作成し、オンプレミスデータベースを同期グループに追加することで、オンプレミスの SQL Server データベース間で間接的に同期できます。You can sync between SQL Server on-premises databases indirectly, however, by creating a Hub database in Azure, and then adding the on-premises databases to the sync group.

データ同期を使用して、異なるサブスクリプションに属している SQL データベース間で同期できますか?Can I use Data Sync to sync between SQL Databases that belong to different subscriptions?

はい。Yes. 異なるサブスクリプションが所有するリソース グループに属している SQL データベース間で同期できます。You can sync between SQL Databases that belong to resource groups owned by different subscriptions.

  • サブスクリプションが同じテナントに属していて、すべてのサブスクリプションへのアクセス許可がある場合、Azure Portal 上で同期グループを構成できます。If the subscriptions belong to the same tenant, and you have permission to all subscriptions, you can configure the sync group in the Azure portal.
  • それ以外の場合、PowerShell を使用して、異なるサブスクリプションに属している同期メンバーを追加する必要があります。Otherwise, you have to use PowerShell to add the sync members that belong to different subscriptions.

データ同期を使用して、実稼働データベースからデータを空のデータベースにデータを挿入し、それらの同期を維持することはできますか?Can I use Data Sync to seed data from my production database to an empty database, and then keep them synchronized?

はい。Yes. 元のデータベースからスクリプトを作成することで、新しいデータベース内にスキーマを手動で作成します。Create the schema manually in the new database by scripting it from the original. スキーマを作成した後で、同期グループにテーブルを追加し、データをコピーして同期を維持します。After you create the schema, add the tables to a sync group to copy the data and keep it synced.

データベースをバックアップおよび復元するには、SQL データ同期を使う必要がありますか?Should I use SQL Data Sync to back up and restore my databases?

SQL データ同期 (プレビュー) を使ってデータのバックアップを作成することはお勧めできません。It is not recommended to use SQL Data Sync (Preview) to create a backup of your data. SQL データ同期 (プレビュー) の同期はバージョン管理されていないため、バックアップして特定の時点に復元することはできません。You cannot back up and restore to a specific point in time because SQL Data Sync (Preview) synchronizations are not versioned. さらに、SQL データ同期 (プレビュー) では、ストアド プロシージャなどの他の SQL オブジェクトはバックアップされず、復元操作に相当する処理は迅速に行われません。Furthermore, SQL Data Sync (Preview) does not back up other SQL objects, such as stored procedures, and does not do the equivalent of a restore operation quickly.

お勧めするバックアップ方法の 1 つについては、「Azure SQL Database のコピー」をご覧ください。For one recommended backup technique, see Copy an Azure SQL database.

データ同期によって、暗号化されたテーブルと列を同期できますか?Can Data Sync sync encrypted tables and columns?

  • データベースが [Always Encrypted (常に暗号化)] を使用する場合、暗号化されていないテーブルおよび列のみを同期できます。If a database uses Always Encrypted, you can sync only the tables and columns that are not encrypted. データ同期はデータを暗号化解除できないため、暗号化された列を同期することはできません。You can't sync the encrypted columns, because Data Sync can't decrypt the data.

  • 列が列レベルの暗号化 (CLE) を使用している場合、行サイズが 24 Mb の最大サイズより小さい場合に限り、列を同期できます。If a column uses Column-Level Encryption (CLE), you can sync the column, as long as the row size is less than the maximum size of 24 Mb. データ同期は、鍵によって暗号化された列 (CLE) を通常のバイナリ データとして処理します。Data Sync treats the column encrypted by key (CLE) as normal binary data. 他の同期メンバーのデータを暗号化解除するには、同じ証明書を持っている必要があります。To decrypt the data on other sync members, you need to have the same certificate.

SQL データ同期では照合順序はサポートされていますか?Is collation supported in SQL Data Sync?

はい。Yes. SQL データ同期は、次のシナリオで照合順序をサポートします。SQL Data Sync supports collation in the following scenarios:

  • 選んだ同期スキーマ テーブルがハブまたはメンバー データベースにまだない場合、同期グループを展開すると、サービスは空の展開先データベースで選ばれている照合順序の設定を使って、対応するテーブルと列を自動的に作成します。If the selected sync schema tables are not already in your hub or member databases, then when you deploy the sync group, the service automatically creates the corresponding tables and columns with the collation settings selected in the empty destination databases.

  • 同期対象のテーブルがハブとメンバー データベースの両方に既に存在する場合は、SQL データ同期で同期グループを正常に展開するには、ハブとメンバー データベースで主キー列の照合順序が同じである必要があります。If the tables to be synced already exist in both your hub and member databases, SQL Data Sync requires that the primary key columns have the same collation between hub and member databases to successfully deploy the sync group. 主キー列以外の列に対して照合順序の制限はありません。There are no collation restrictions on columns other than the primary key columns.

SQL データ同期ではフェデレーションはサポートされていますか?Is federation supported in SQL Data Sync?

フェデレーション ルート データベースは、SQL データ同期 (プレビュー) サービスで制限なしに使うことができます。Federation Root Database can be used in the SQL Data Sync (Preview) Service without any limitation. 現在のバージョンの SQL データ同期 (プレビュー) には、フェデレーション データベースのエンドポイントを追加できません。You cannot add the Federated Database endpoint to the current version of SQL Data Sync (Preview).

次の手順Next steps

SQL データ同期の詳細については、以下を参照してください。For more info about SQL Data Sync, see:

SQL Database の詳細については、以下を参照してください。For more info about SQL Database, see: