複数のクラウドおよびオンプレミス データベースにわたるデータを SQL データ同期で同期しますSync data across multiple cloud and on-premises databases with SQL Data Sync

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.

重要

現時点では、Azure SQL データ同期で Azure SQL Database Managed Instance はサポートされていませんAzure SQL Data Sync does not support Azure SQL Database Managed Instance at this time.

データ同期を使用する場合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/regions. ネットワーク待ち時間を最小限にするには、データは最寄りのリージョンに配置するのが一番です。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 the preferred solution for the following scenarios:

シナリオScenario 推奨されるソリューション例Some recommended solutions
ディザスター リカバリーDisaster Recovery Azure 地理冗長のバックアップAzure geo-redundant backups
読み取りスケールRead Scale 読み取り専用レプリカを使用して読み取り専用クエリ ワークロードを負荷分散する (プレビュー)Use read-only replicas to load balance read-only query workloads (preview)
ETL (OLTP から OLAP へ)ETL (OLTP to OLAP) Azure Data Factory または SQL Server Integration ServicesAzure Data Factory or SQL Server Integration Services
オンプレミス SQL Server から Azure SQL Database への移行Migration from on-premises SQL Server to Azure SQL Database Azure Database Migration ServiceAzure Database Migration Service

SQL データ同期の概要Overview of SQL Data Sync

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

データ同期は、データを同期するために、ハブとスポークのトポロジを使用します。Data Sync uses a hub and spoke topology to synchronize data. 同期グループ内のいずれかのデータベースを、ハブ データベースとして定義します。You define one of the databases in the sync 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 as a member database, you have to install and configure a local sync agent.

データベース間でのデータの同期

同期グループには、次のプロパティがあります。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 describes how often synchronization occurs.
  • 競合解決ポリシーは、グループ レベルのポリシーであり、 [ハブ側に合わせる][Member wins](メンバー側に合わせる) のどちらかにすることができます。The Conflict Resolution Policy is a group level policy, which can be Hub wins or Member wins.

データ同期のしくみ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. 既定では BULK INSERT はトリガーを起動しないことに注意してください。Note that BULK INSERT does not fire triggers by default. FIRE_TRIGGERS が指定されていない場合は、INSERT トリガーは実行しません。If FIRE_TRIGGERS is not specified, no insert triggers execute. データ同期がこれらの INSERT を追跡できるように、FIRE_TRIGGERS オプションを追加します。Add the FIRE_TRIGGERS option so Data Sync can track those inserts.
  • データの同期: データ同期は、ハブとスポークのモデルで設計されています。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.

データ同期とトランザクション レプリケーションの比較Compare Data Sync with Transactional Replication

データ同期Data Sync トランザクション レプリケーションTransactional Replication
長所Advantages - アクティブ/アクティブのサポート- Active-active support
- オンプレミスと Azure SQL Database 間で双方向- Bi-directional between on-premises and Azure SQL Database
- 待ち時間の短縮- Lower latency
- トランザクションの整合性- Transactional consistency
- 移行後に既存のトポロジの再利用- Reuse existing topology after migration
短所Disadvantages - 5 分以上の待機時間- 5 min or more latency
- トランザクションの整合性なし- No transactional consistency
- パフォーマンスへの影響が大きい- Higher performance impact
- Azure SQL Database の単一データベースまたはプールされたデータベースから発行できない- Can’t publish from Azure SQL Database single database or pooled database
- 高いメンテナンス コスト- High maintenance cost

SQL データ同期の概要Get started with SQL Data Sync

Azure portal でのデータ同期の設定Set up Data Sync in the Azure portal

PowerShell を使用したデータ同期の設定Set up Data Sync with PowerShell

データ同期のベスト プラクティスの確認Review the best practices for Data Sync

何か問題が起きた場合Did something go wrong

一貫性とパフォーマンスConsistency and performance

最終的な一貫性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.

同期グループの作成、更新、および削除中のプロビジョニングとプロビジョニング解除は、データベースのパフォーマンスにも影響を与える可能性があります。Provisioning and deprovisioning during sync group creation, update, and deletion may also impact the database performance.

要件と制限Requirements and limitations

一般的な要件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.

重要

既存の主キーの値を変更すると、次の動作不良が生じます。Changing the value of an existing primary key will result in the following faulty behavior:

  • 同期の問題がレポートされなくても、ハブとメンバーとの間でデータの損失が生じる可能性があります。Data between hub and member can be lost even though sync does not report any issue.
  • 同期に失敗する可能性があります。主キーの変更で、追跡しているテーブルに、同期元からの存在しない行が含まれることが原因です。Sync can fail because the tracking table has a non-existing row from source due to the primary key change.

一般的な制限事項General limitations

  • テーブルに、主キー以外の ID 列を設けることはできません。A table cannot have an identity column that is not the primary key.
  • 主キーに、次のデータ型を含めることはできません。sql_variant、binary、varbinary、image、xml。A primary key cannot have the following data types: sql_variant, binary, varbinary, image, xml.
  • サポートされている精度は秒に対してのみであるため、次のデータの種類を主キーとして使用するときは注意してください。time、datetime、datetime2、datetimeoffset。Be cautious when you use the following data types as a primary key, because the supported precision is only to the second: time, datetime, datetime2, datetimeoffset.
  • オブジェクト (データベース、テーブル、および列) の名前には、印刷可能な文字のピリオド (.)、左角かっこ ([)、または右角かっこ (]) を使用できません。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.
  • 名前が同じでスキーマが異なるテーブル (たとえば、dbo.customers や sales.customers など) はサポートされていません。Tables with same name but different schema (for example, dbo.customers and sales.customers) are not supported.
  • ユーザー定義データ型の列はサポートされていません。Columns with User Defined Data Types are not supported

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

  • FileStreamFileStream
  • SQL/CLR UDTSQL/CLR UDT
  • XMLSchemaCollection (XML サポート)XMLSchemaCollection (XML supported)
  • Cursor、RowVersion、Timestamp、HierarchyidCursor, RowVersion, Timestamp, Hierarchyid

サポートされていない列の種類Unsupported column types

データ同期では、読み取り専用の列またはシステムで生成された列は同期できません。Data Sync can't sync read-only or system-generated columns. 例:For example:

  • 計算列。Computed columns.
  • テンポラル テーブル用にシステムで生成された列。System-generated columns for temporal tables.

サービスとデータベースの数量に関する制限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
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 10001000
テーブルでのデータ行のサイズData row size on a table 24 Mb24 Mb
最小同期間隔Minimum sync interval 5 分5 Minutes

注意

同期グループが 1 つだけの場合は、 1 つの同期グループで最大 30 個のエンドポイントを持つことができます。There may be up to 30 endpoints in a single sync group if there is only one sync group. 同期グループが 2 つ以上ある場合は、すべての同期グループでのエンドポイントの合計数が最大 30 個に制限されます。If there is more than one sync group, the total number of endpoints across all sync groups cannot exceed 30. データベースが複数の同期グループに属している場合、それは 1 つではなく、複数のエンドポイントとしてカウントされます。If a database belongs to multiple sync groups, it is counted as multiple endpoints, not one.

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

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

SQL データ同期サービスそのものに対しては課金されません。There is no charge for the SQL Data Sync service itself. ただし、SQL データベース インスタンスへの、またはインスタンスからのデータ移動には、データ転送の料金がかかります。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 is available in all 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.

データ同期を使用して、異なるクラウド (Azure パブリック クラウドと Azure China など) の SQL データベース間で同期できますか?Can I use Data Sync to sync between SQL Databases that belong to different clouds (like Azure Public Cloud and Azure China)

はい。Yes. 異なるクラウドに属している SQL データベース間で同期できます。PowerShell を使用して、異なるサブスクリプションに所属する同期メンバーを追加する必要があります。You can sync between SQL Databases that belong to different clouds, you have to use PowerShell to add the sync members that belong to the different subscriptions.

データ同期を使用して、自分の実稼働データベースから空のデータベースにデータをシードし、同期することはできますか?Can I use Data Sync to seed data from my production database to an empty database, and then sync them

はい。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 to create a backup of your data. SQL データ同期の同期はバージョン管理されていないため、バックアップして特定の時点に復元することはできません。You cannot back up and restore to a specific point in time because SQL Data Sync synchronizations are not versioned. さらに、SQL データ同期では、ストアド プロシージャなどの他の SQL オブジェクトはバックアップされず、復元操作に相当する処理は迅速に行われません。Furthermore, SQL Data Sync 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 データベースのコピー」をご覧ください。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 Service without any limitation. 現在のバージョンの SQL データ同期には、フェデレーション データベースのエンドポイントを追加できません。You cannot add the Federated Database endpoint to the current version of SQL Data Sync.

次の手順Next steps

同期されたデータベースのスキーマの更新Update the schema of a synced database

同期グループ内のデータベースのスキーマを更新する必要がある場合、Do you have to update the schema of a database in a sync group? スキーマ変更は自動的にはレプリケートされません。Schema changes are not automatically replicated. いくつかのソリューションについては、次の記事を参照してください。For some solutions, see the following articles:

監視とトラブルシューティングMonitor and troubleshoot

SQL データ同期が想定どおりに実行されているかどうかを確認したい場合に、Is SQL Data Sync performing as expected? アクティビティを監視して問題のトラブルシューティングを行うには、次の記事を参照してください。To monitor activity and troubleshoot issues, see the following articles:

Azure SQL Database の詳細Learn more about Azure SQL Database

SQL Database の詳細については、次の記事を参照してください。For more info about SQL Database, see the following articles: