SQL Serverのレプリケーションを完全ガイド!基礎知識から種類や仕組みまでわかりやすく解説

by 加藤龍彦 | March 22, 2024 | Last Updated: June 10, 2026

SQL Server のレプリケーションを徹底解説:基礎知識から設定方法まで

「本番データを別拠点に常時同期したい」「レポート用のクエリを本番DBから切り離したい」——こうした要件を抱えるデータベース管理者は多いのではないでしょうか。SQL Server のレプリケーションは、こうした課題に対応するための中核機能です。ディザスタリカバリ(DR)、レポート用DBの分離、マルチリージョン配布など、幅広いユースケースに対応しています。

本記事では、SQL Server レプリケーションの基本概念・4種類の手法・SSMS での具体的な設定手順を解説します。加えて、レプリケーション、ミラーリング、AlwaysOn 可用性グループ、バックアップといった高可用性技術の使い分けも整理します。SSMSでの設定に加え、ノーコードで手軽に自動化できる CData Sync による方法も紹介しますので、用途に応じた最適な手法を選ぶ参考にしてください。

SQL Server のレプリケーションとは?

SQL Server のレプリケーションとは、あるデータベースから別のデータベースにデータやデータベースオブジェクトをコピーして配布し、それらのデータベース間でデータを同期してデータの整合性と一貫性を維持するプロセスです。Microsoft SQL Server の中核機能であり、スケーラビリティの確保、高可用性の実現、レポート用DBの分離など、さまざまな目的でデータベースのコピーを複数作成・維持できます。

SSMS(SQL Server Management Studio)はSQL Server 間のレプリケーション設定に適したツールですが、対応範囲はSQL Server 同士に限られます。SQL Server 以外のDBへのレプリケーション、または設定をノーコードで完結させたい場合は、ETL ツールの CData Sync が有効な選択肢です。

本記事では、SQL Server レプリケーションに関わる主要なコンポーネント、レプリケーションの4種類の手法、設定手順の順に解説します。

SQL Server レプリケーションの基礎知識

レプリケーションには3つの主要なSQL Server インスタンスが関わります。名称は出版業界のアナロジーに基づいています。

コンポーネント

役割

パブリッシャー

ソースデータを保持し、データの変更内容をディストリビューターへ渡す。

ディストリビューター

パブリッシャーからスナップショットやトランザクションログなどのデータ変更を受け取って格納し、サブスクライバーへ送る。

サブスクライバー

ディストリビューターからデータを受け取って書き込む同期先。

これらに加え、レプリケーションを構成するその他のコンポーネントは以下のとおりです。

コンポーネント

説明

アーティクル

レプリケーションの基本単位。ビュー、テーブル、ストアドプロシージャが含まれます。フィルタオプションで列・行を制限でき、1つのオブジェクトに複数のアーティクルを作成することも可能です。

パブリケーション

アーティクルと関連情報の論理的な集合。パブリケーション単位でプロパティを定義すると、含まれる全アーティクルがそのプロパティを継承します。

パブリケーションDB

レプリケート元のデータを格納するDB。パブリッシャーは複数のパブリケーションを持つことができます。

ディストリビューションDB

アーティクルの詳細・データ・メタデータを保管し、パブリッシャーとサブスクライバーの仲介を管理するサーバー。

サブスクリプション

特定のサブスクライバーがパブリケーションのコピーを要求する操作。

サブスクリプションDB

レプリケート先のデータベース。

エージェント

バックグラウンドで動作するSQL Server コンポーネント。レプリケーションジョブの実行をスケジューリングします。スナップショット・ログリーダー・ディストリビューション・マージ・キューリーダーの5種類があります。

レプリケーションの主な構成要素間の関係を図示すると、以下のようになります。

SQL Server レプリケーションの構成要素間の関係

SQL Server レプリケーションの種類

SQL Server で利用可能なレプリケーションには4種類あり、それぞれ目的と適用シナリオが異なります。

スナップショットレプリケーション

データのある時点でのコピーがパブリッシャー(データソース)から取得され、サブスクライバー(同期先)に反映されます。毎回データをすべてコピーするため、スナップショットは小規模から中規模のデータベースや、データの変更頻度が低い場合に適しています。

こんな場合におすすめ

  • マスタデータや参照テーブルなど、更新頻度が低いデータの配布

  • 定期レポート用にデータをスナップショットとして同期したい場合

  • 初回のレプリケーション初期化(他の方式と組み合わせて使用)

トランザクションレプリケーション

トランザクションログをもとにレプリケーションを行います。トランザクションとは、DBに対して発行された追加・更新・削除といったSQL クエリのログを指します。

パブリッシャーからサブスクライバーへの個々のトランザクションをニアリアルタイムでキャプチャし、レプリケートできます。スケーラビリティや可用性の向上、データウェアハウスへの統合やレポーティング、複数ソースからのデータ統合、バッチ処理のオフロードなど、高いスループットを必要とするシナリオに最適です。データが頻繁に変更される大規模環境に適しています。

こんな場合におすすめ

  • 本番DBから分析・レポート用DBへのニアリアルタイム同期

  • データウェアハウスやBIツールへの継続的なデータ供給

  • 更新頻度の高い大規模テーブルを別拠点に配布したい場合

ピアツーピアレプリケーション

パブリッシャーサーバーが同時に複数のサブスクライバーサーバーにデータをレプリケートする方式です。

異なるサーバーインスタンス(ノード)間でデータのコピーを保持することで、データの可用性とスケーラビリティを強化します。1つの集中型データセンターが他のデータセンターのデータを管理します。世界中で複数のデータセンターを保持し、それらを連携させたい場合に適しています。

こんな場合におすすめ

  • グローバルに分散した複数拠点へのデータ配布と読み取り負荷分散

  • 単一障害点を排除し、高い読み取りスループットを確保したい場合

  • 各ノードで読み取り処理をローカル完結させたいマルチリージョン構成

マージレプリケーション

マージレプリケーションでは、初回にパブリッシャーからサブスクライバーにスナップショットを同期した後、パブリッシャー・サブスクライバーDB の変更を記録します。サブスクライバーがネットワークに接続した際に変更を統合(マージ)し、双方のデータを更新します。

同期は継続的、スケジュール実行、または手動で行えます。データ同期の際に競合が発生するため、競合解決の方法を事前に設定する必要があります。複数のサーバーで更新が発生し、それらを同期させる必要があるシナリオに適しています。

こんな場合におすすめ

  • モバイル端末や支店など、断続的にネットワークへ接続するクライアントとの同期

  • 複数拠点で書き込みが発生し、定期的に変更をマージしたい場合

  • オフライン環境でも更新を記録し、後から一括同期したい場合

レプリケーションとその他の高可用性技術の違い

SQL Server には、レプリケーション以外にも「データベースミラーリング」「AlwaysOn 可用性グループ」「バックアップ」といったデータ保護・配布の手段があります。それぞれ目的が異なるため、用途に応じた使い分けが重要です。

SQL Server 高可用性機能の比較

技術

主な用途

同期の粒度・方向

SQL Server バージョン

レプリケーション

データ配布・レポート分離・DR補助

テーブル/行/列単位。単方向または双方向(マージ)

SQL Server 2008〜(Standard / Enterprise)

AlwaysOn 可用性グループ

高可用性・フェールオーバー(主目的)

データベース全体。同期または非同期(読み取り可能セカンダリ)

SQL Server 2012〜(Enterprise 推奨)

データベースミラーリング

高可用性(フェールオーバー)

データベース全体。ミラー側は読み取り不可

SQL Server 2012 以降は非推奨

バックアップ

災害復旧(DR)・ポイントインタイムリカバリ

データベース全体またはファイルグループ。オフライン(時点スナップショット)

全バージョン対応

レプリケーション vs. データベースミラーリング

データベースミラーリングは、プリンシパルサーバーとミラーサーバーの2台でDBを同期し、障害発生時にミラー側へ自動切り替えする機能です。ただし、SQL Server 2012 以降は非推奨となっており、後継技術である AlwaysOn 可用性グループへの移行が推奨されています。ミラーリングはデータベース全体を複製するのに対し、レプリケーションはテーブル・列・行単位での柔軟なデータ配布が可能です。

レプリケーション vs. AlwaysOn 可用性グループ

AlwaysOn 可用性グループは、高可用性とディザスタリカバリを主目的として設計されています。データベース全体を対象に同期し、プライマリへの書き込みをセカンダリにほぼリアルタイムで反映します。セカンダリは読み取り専用クエリやバックアップ処理に活用できます。一方、レプリケーションはデータ配布を目的としており、同期対象をテーブルや列単位で細かく制御できる点が強みです。フェールオーバーによる高可用性が主要件であれば AlwaysOn を、特定テーブルを別DBやDWHに配布したい場合はレプリケーションが適しています。

レプリケーション vs. バックアップ

バックアップは、ある時点のデータベース全体を保存し、障害発生時にその時点まで復旧するための手段です。リアルタイムの同期は行われないため、バックアップ取得後の変更は失われます。レプリケーションは継続的にデータを同期するため、バックアップとは目的が根本的に異なります。DR要件として「一定時点への復旧」が必要な場合はバックアップ、「別拠点へのリアルタイムデータ配布」が必要な場合はレプリケーションを採用してください。多くの本番環境では、両者を組み合わせて運用します。

SQL Server レプリケーションの設定

それでは、SQL Server のレプリケーションを行うための基本的な設定を実行してみましょう。

レプリケーションの設定には、パブリケーションの構成、アーティクルの定義、サブスクリプションの作成、レプリケーションプロセスの監視が必要です。データベースのサイズ、データ変更の頻度、ユースケースの要件に応じて、適切なレプリケーション手法を選択することが重要です。

レプリケーションは強力な機能である一方、設定が複雑な面もあります。適切な計画と保守が運用成功の鍵です。

環境を準備する

  • レプリケーションに必要な権限が設定されていることを確認します。

  • 必要なコンポーネントがすべての利用するサーバーにインストールされていることを確認します。レプリケーションを利用するには、SQL Server のセットアップで「SQL Server レプリケーション」を選択してインストールしておきましょう。

    SQL ServerセットアップでSQL Serverレプリケーションコンポーネントを選択

ディストリビューションを作成する

  • ディストリビューションを作成するには、まずSSMS を起動して、「レプリケーション」オブジェクトを右クリック → 「ディストリビューションの構成」をクリックします。

SQL Server Management Studioでディストリビューションを構成

  • 構成ウィザードが表示されるので、まずはディストリビューターを指定してエージェントの起動を設定します。

SQL Serverレプリケーションウィザードでディストリビューターを指定

  • ディストリビューション名やパスを指定します。

SQL Serverレプリケーションウィザードでディストリビューションデータベース設定

  • ディストリビューターにアクセスできるパブリッシャーを指定します。

SQL Serverレプリケーションウィザードでパブリッシャーを指定

  • 完了すると、成功を示すウィンドウが表示されます。

    SQL Serverレプリケーションのディストリビューター設定完了画面

パブリケーションを作成する

次に、レプリケートするデータベースのアーティクル(テーブル、ビュー、ストアドプロシージャ)を設定します。パブリケーションを作成するには、レプリケーションオブジェクトを右クリックして表示される「新規作成」から「パブリケーション」をクリックします。

SQL Serverレプリケーションのサブスクリプション設定完了画面

  • まず、パブリケーションに使うデータベースを指定します。

  • SQL Serverレプリケーションウィザードでパブリケーションデータベースを選択
     

  • パブリケーションの種類を指定します。今回はシンプルにスナップショットパブリケーションで設定します。

    SQL Serverレプリケーションウィザードでパブリケーションタイプを選択

  • パブリッシュするアーティクルを選択します。次の画面で必要に応じてフィルタを設定してください。

    SQL Serverレプリケーションウィザードでパブリケーションのアーティクルを選択

  • その後エージェントの設定やパブリケーション名を指定して、「完了」をクリックします。成功を示すウィンドウが表示されれば完了です。

    SQL Serverレプリケーションのパブリケーション設定完了画面

サブスクライバーを設定する

レプリケートされたデータを受信するサブスクライバー(同期先サーバー)を設定します。

  • 「サブスクリプション」を選択してウィザードを起動します。

    SQL Server Management Studioのオブジェクトエクスプローラーでレプリケーションが表示される

  • ディストリビューションエージェントの場所を指定します。今回は、先ほど作成したディストリビューターを使用します。サブスクライバー側で同期を管理するプル型を選択することも可能です。

    SQL Serverレプリケーションウィザードでディストリビューションエージェントの場所を指定

  • サブスクリプションデータベースを指定または新規作成し、セキュリティ設定を行います。

    SQL Serverレプリケーションウィザードでサブスクリプションデータベースを指定

  • 同期スケジュールを指定します。

    SQL Serverレプリケーションウィザードで同期スケジュールを指定

  • 最後に初期化時の設定をして、準備は完了です。

    SQL Serverレプリケーションウィザードでサブスクリプション初期化の設定

  • サブスクリプションが作成されました。

    SQL Serverレプリケーションウィザードでサブスクリプションを作成

同期が完了すると、サブスクリプションDBにAdventureWorks のテーブルが正常に同期されました。

SQL Server Management StudioでレプリケートされたAdventureWorksデータベースの表示

監視と保守

  • レプリケーションにエラーや遅延がないか定期的に監視します。

  • 古いデータのクリーンアップ、インデックスの最適化など、定期的なメンテナンス作業を実施しましょう。

エラーとコンフリクトに対処する

  • コンフリクトを解決するメカニズムを実装します(特にマージレプリケーションでは必須)。

  • レプリケーションのエラーに対処し、レプリケーションを再開するための計画を立てます。

上記の手順は概要であり、具体的な手順はお使いのSQL Server のバージョンや環境の要件によって異なります。詳細および最新情報については、ご使用のSQL Server のバージョンに対応するMicrosoft の公式ドキュメントを参照してください。

CData Sync でSQL Server をレプリケーション

ここまでで、SSMS を利用したSQL Server のレプリケーション方法を見てきました。CData Sync を使用すると、SQL Server のレプリケーションを3ステップ・ノーコードで実現できます。

また、SQL Server 以外にも400種類以上の業務アプリケーション・DB にデータソースとして対応しているほか、SQL Server 以外に20種類以上の同期先を用意しています。SQL Server 間以外でのレプリケーションを検討中の方、設定を自動化したい方はぜひCData Sync をお試しください。

それでは、CData Sync を使ったSQL Server のレプリケーション設定方法を見ていきましょう。

レプリケーションの同期先としてSQL Server を設定する

SQL Server インスタンスに、データソース・同期先として両方で接続していきます。手順はどちらも同じです。SQL Server への接続は、データソース用とターゲット用で2回設定します。これらはそれぞれパブリッシャーとサブスクライバーに対応します(CData Sync が仲介役として機能するため、別途ディストリビューターのセットアップは不要です)。

まずは、「接続」ページに移動してSQL Server への接続を追加します。SQL Server インスタンスのホストに応じて接続方法が決まります。

Microsoft SQL Server への接続

次のプロパティを使用してMicrosoft SQL Server に接続します。

  • User:SQL Server での認証に使用するユーザー名。

  • Password:認証するユーザーに紐づくパスワード。

  • Database:SQL Server データベースの名前。

    CData Sync SQL Serverデータ接続設定画面

Azure SQL Server およびAzure Data Warehouse への接続

Azure SQL Server またはAzure Data Warehouse に対して認証するには、次のプロパティを設定します。

  • Server:Azure を実行しているサーバー。Azure ポータルにログインし、「SQL データベース」(またはSQL データウェアハウス > 自身のデータベースを選択 > 概要 > サーバー名)に進むことで確認できます。

  • User:Azure に対して認証を行うユーザーの名前。

  • Password:認証するユーザーに紐づくパスワード。

  • Database:Azure ポータルのSQL データベース(またはSQL ウェアハウス)に表示されるデータベースの名前。

接続を設定したら、「接続およびテスト」をクリックして設定を確認します。

レプリケーションジョブを設定する

CData Sync なら、ジョブの設定も数クリックで完了します。構成する個々のレプリケーションについて、「ジョブ」に移動し「ジョブを追加」をクリックします。レプリケーションのデータソースと同期先として、先ほど設定したSQL Server を選択します。

CData Syncレプリケーションジョブ設定画面

ジョブを追加したら、ジョブの画面に移動して同期するテーブルとカラムを選択します。今回は、AdventureWorks の Customer テーブルを同期してみます。

テーブル全体のレプリケート

テーブル全体をレプリケートするには、「タスク」セクションで「タスクを追加」をクリックし、レプリケートしたいテーブルを選択して「タスクを追加」をクリックします。

CData Syncレプリケーションタスク設定画面でAdventureWorksのCustomerテーブルを選択

レプリケーションのカスタマイズ

各タスクの「カラム」タブと「クエリ」タブでレプリケーション方法をカスタマイズできます。「カラム」タブではレプリケートするカラムの指定、同期先でのカラム名変更、レプリケート前のデータ変換が可能です。「クエリ」タブでは、SQL を使ってフィルタリングやグルーピングを実行できます。

それでは、実際にジョブを実行してみましょう。

SQL Server Management StudioでレプリケートされたCustomerテーブルの表示

Sync 上でSuccessful と表示され、SQL Server 上にレプリケートが完了しました。

CData Syncレプリケーションジョブのスケジュール設定画面

レプリケーションのスケジュールを設定する

初回実行やテスト時は手動で同期しますが、運用時は自動実行の設定が必要です。

CData Sync では、タスク画面からスケジュール実行を設定できます。「スケジュール」セクションで、1分間隔でのニアリアルタイムレプリケーションから1カ月間隔、Cron 式でのカスタム間隔まで、用途に応じたスケジュールでジョブ実行を設定できます。設定が完了したら「保存」をクリックします。SQL Server データのレプリケーションを管理するジョブはいくつでも設定できます。

CData Syncでレプリケーションジョブを実行

おわりに:SSMS と CData Sync の使い分け

本記事では、SQL Server レプリケーションの基礎知識から4種類の手法の使い分け、SSMSでの設定手順、そして他の高可用性技術との違いまでを解説しました。最後に、判断の目安となる選択基準を整理します。

このような場合は SSMS

このような場合は CData Sync

SQL Server 同士のレプリケーションで十分

SQL Server 以外のDB・SaaS との連携が必要

細かい権限制御やエージェント設定が必要

ノーコードで設定を完結させたい

SQL Server のネイティブ機能のみで完結させたい

ETL/ELT でのデータ変換を組み合わせたい

CData Sync は、SQL Server を含む400種類以上のSaaS やDBに対応し、PostgreSQL、MySQL、Oracle、SAP HANA など、幅広いプラットフォームへのレプリケーションをサポートしています。継続的なレプリケーションの自動化に加え、CDCを活用した増分レプリケーションも利用できます。

まずは無償トライアルでSQL Server レプリケーションの設定をお試しください。

最終更新: 2026年6月

SQL Server、SAP、Salesforce... 業務で使うあらゆるデータを簡単レプリケーション

CData Sync を使えば、SQL ServerはもちろんSAP・NetSuite などの基幹システムやSalesforce・kintoneといったSaaSデータも簡単に同期できます。詳しい機能や対応システムを資料でご確認いただけます。

資料をダウンロードする