web-dev-qa-db-ja.com

2つのSQL Server 2012間でデータを複製する方法は?

2つのSQL Server 2012データベースが2つの異なるWindows Serverインスタンスで実行されています。サーバーA(DB1)を新しいサーバーB(DB2)と完全に同期させます。

どうすればこれらの関係を確立できますか?

SQL Management Studioでこれを行う方法はありますか?

注:サーバーBで行うことは、サーバーAに複製するべきではありません。

1
Omran

公式 レプリケーション機能 ページをざっと見てみましょう:

トランザクションレプリケーション。詳細については、 トランザクションレプリケーション を参照してください。

マージレプリケーション。詳細については、「 マージレプリケーション 」を参照してください。

スナップショットレプリケーション。詳細については、「 スナップショットレプリケーション 」を参照してください。

要するに:

  • トランザクションレプリケーション:データベース間の増分変更。
  • マージレプリケーション:トランザクションに似ていますが、その後の変更点があります。
  • スナップショットレプリケーション:は、指定されたデータベースの完全なコピー/上書きを意味します。基本的に、これはデータベースの最初の複製インスタンスを作成するために使用されます。

また、レプリケーションのために SQLサーバーエージェント の概要とセットアップを行う必要があります。

SQL Serverのレプリケーションメカニズムでは、基本的な技術的な理解のために、 Publisher-subscriber pattern を利用しています。

EDIT:私は意図的にレプリケーションに使用されるパターンについて言及していましたが、もう少し詳しく説明しましょう。

基本的なトランザクションレプリケーションのアーキテクチャの概要:

Transactional replication architectural graph

要約すると、操作のフローが簡素化されます。

  1. パブリッシャー(お客様の場合はDB-1、ソースデータベースサーバー)は、データを複製できる状態にします。
  2. ディストリビューター(選択したレプリケーションエージェント)は、パブリッシャーとサブスクライバーの間の仲介者です(上記のパターンに注意してください)。
  3. パブリッシュされたデータを受信するサブスクライバー(この場合はDB-2、宛先データベースサーバー)。

このようにして、データをDB-1からDB-2に複製し、逆方向には複製しません(必要に応じてそれを行うように構成することもできます)。

2
kayess

すぐに使用できる3つのオプションがあります。

  1. SQL Serverレプリケーション
  2. SQL Server AlwaysOn可用性グループ
  3. TSQLおよびSQLエージェントジョブを介したデータベース/ログのバックアップ。

レプリケーションとAlwaysOnは、TSQLまたはSSMSから構成できます。どちらも管理が必要です。あなたが言及しなかった唯一のことは、2つの間の望ましい待ち時間がどのくらいであるか、そして2番目のサーバーの可用性がどの程度である必要があるかです。リアルタイムまたはほぼリアルタイムが必要な場合は、上記で十分です。 2番目のサーバーがかなり古くなる可能性がある場合は、他のオプションがあり、SQLエージェントジョブを介した単純な古いバックアップの復元が最も簡単です。

1
Greg