Azure SQL Database へのレプリケーション
適用対象: Azure SQL データベース
Azure SQL Database は、SQL Server または Azure SQL Managed Instance からの一方向のトランザクションまたはスナップショット レプリケーション トポロジのプッシュ サブスクライバーとして構成できます。
Note
この記事では、Azure SQL Database でののトランザクション レプリケーションの使用方法について説明します。 これは、個々のデータベースの完全な読み取り可能レプリカを作成するための Azure SQL Database の機能である、アクティブ geo レプリケーションとは無関係です。
サポートされている構成
- Azure SQL Database は、SQL Server パブリッシャーとディストリビューターのプッシュ サブスクライバーとしてのみ構成できます。
- パブリッシャーまたはディストリビューターとして機能する SQL Server インスタンスは、オンプレミスで実行されている SQL Server のインスタンス、Azure SQL Managed Instance、またはクラウドの Azure 仮想マシンで実行されている SQL Server のインスタンスのいずれかになります。
- ディストリビューション データベースとレプリケーション エージェントは、Azure SQL Database のデータベースに配置できません。
- スナップショットおよび一方向のトランザクション レプリケーションがサポートされています。 ピア ツー ピア トランザクション レプリケーションおよびマージ レプリケーションはサポートされていません。
バージョン
Azure SQL Database のデータベースへ正常にレプリケートするには、SQL Server パブリッシャーおよびディストリビューターで、(少なくとも) 次のいずれかのバージョンが使用されている必要があります。
SQL Server データベースから Azure SQL Database への発行は、次のバージョンの SQL Server でサポートされます。
- SQL Server 2016 以降
- SQL Server 2014 RTM CU10 (12.0.4427.24) または SP1 CU3 (12.0.2556.4)
- SQL Server 2012 SP2 CU8 (11.0.5634.1) または SP3 (11.0.6020.0)
Note
サポートされていないバージョンを使用してレプリケーションを構成しようとすると、エラー番号 MSSQL_REPL20084 (プロセスはサブスクライバーに接続できませんでした) および MSSQL_REPL40532 (ログインによって要求されたサーバー <name> を開くことができません。ログインに失敗しました。) が発生する可能性があります。
Azure SQL Database のすべての機能を使用するには、最新バージョンの SQL Server Management Studio (SSMS) および SQL Server Data Tools を使用する必要があります。
レプリケーションの種類
さまざまなレプリケーションの種類があります。
レプリケーション | Azure SQL データベース | Azure SQL Managed Instance |
---|---|---|
標準トランザクション | はい (サブスクライバーとしてのみ) | はい |
スナップショット | はい (サブスクライバーとしてのみ) | はい |
マージ レプリケーション | いいえ | いいえ |
ピア ツー ピア | いいえ | いいえ |
双方向 | いいえ | はい |
更新可能なサブスクリプション | いいえ | 無効 |
解説
- Azure SQL Database へのプッシュ サブスクリプションのみがサポートされています。
- レプリケーションを構成するには、SQL Server Management Studio を使用するか、パブリッシャーで Transact-SQL ステートメントを実行します。 Azure portal を使用してレプリケーションを構成することはできません。
- レプリケーションで Azure SQL Database に接続するために使用できるのは、SQL Server 認証ログインのみです。
- レプリケーション テーブルには主キーが必要です。
- 既存の Azure サブスクリプションが必要です。
- Azure SQL Database のサブスクライバーは、どのリージョンであってもかまいません。
- SQL Server 上の単一パブリケーションで、Azure SQL Database と、SQL Server (オンプレミスの SQL Server と Azure 仮想マシンの SQL Server) の両方のサブスクライバーをサポートできます。
- レプリケーションの管理、監視、およびトラブルシューティングは、Azure SQL Database からではなく SQL Server から実行する必要があります。
- SQL Database については、sp_addsubscription で
@subscriber_type = 0
のみがサポートされています。 - Azure SQL Database では、双方向、即時、更新可能、またはピア ツー ピアのレプリケーションはサポートされていません。
レプリケーション アーキテクチャ
シナリオ
一般的なレプリケーション シナリオ
- SQL Server データベースで、トランザクション レプリケーション パブリケーションを作成します。
- SQL Server で、新しいサブスクリプション ウィザードまたは Transact-SQL ステートメントを使用して、Azure SQL Database のサブスクリプションに対するプッシュを作成します。
- Azure SQL Database の単一およびプールされたデータベースでは、初期データ セットはスナップショットです。このスナップショットは、スナップショット エージェントによって作成され、ディストリビューション エージェントによって配布および適用されます。 SQL Managed Instance パブリッシャーでは、データベース バックアップを使用して Azure SQL Database サブスクライバーをシードすることもできます。
データ移行シナリオ
- トランザクション レプリケーションを使用して、データを、SQL Server データベースから Azure SQL Database にレプリケートします。
- クライアントまたは中間層アプリケーションをリダイレクトし、データベースのコピーを更新します。
- テーブルの SQL Server のバージョンの更新を停止し、パブリケーションを削除します。
制限事項
次のオプションを使用したレプリケーションは、Azure SQL Database ではサポートされていません。
- ファイル グループの関連付けのコピー
- テーブルのパーティション分割構成のコピー
- インデックスのパーティション分割構成のコピー
- ユーザー定義の統計情報のコピー
- 既定のバインドのコピー
- ルールのバインドのコピー
- フルテキスト インデックスのコピー
- XML XSD のコピー
- XML インデックスのコピー
- アクセス許可のコピー
- 空間インデックスのコピー
- フィルター処理済みインデックスのコピー
- データ圧縮属性のコピー
- スパース列属性のコピー
- MAX データ型への filestream の変換
- MAX データ型への hierarchyid の変換
- MAX データ型への spatial の変換
- 拡張プロパティのコピー
未定の制限事項
- 照合順序のコピー
- SP のシリアル化されたトランザクションでの実行
例
パブリケーションおよびプッシュ サブスクリプションを作成します。 詳細については、次を参照してください。
- パブリケーションを作成する
- プッシュ サブスクリプションを作成する。サーバー名をサブスクライバーとして (N'azuresqldbdns.database.windows.net' など)、また、Azure SQL Database 名を宛先データベースとして (AdventureWorks など) 使用します。