次の方法で共有


ピア ツー ピア トポロジの管理 (レプリケーション Transact-SQL プログラミング)

ピア ツー ピア トポロジの管理は、一般的なトランザクション レプリケーション トポロジの管理と似ていますが、特別な考慮事項を持つ領域がいくつかあります。 ピア ツー ピア トポロジを管理する主な違いは、一部の変更でシステムを 休止する必要がある点です。 システムを休止するには、すべてのノードでパブリッシュされたテーブルのアクティビティを停止し、各ノードが他のすべてのノードからすべての変更を確実に受け取っていることを確認する必要があります。 詳細については、「レプリケーション トポロジの停止 (レプリケーション Transact-SQL プログラミング)」を参照してください。

ピア ツー ピア トポロジでは、ディストリビューターがプル サブスクライバーよりも前のバージョンの SQL Server を使用することはできません。

既存の構成にアーティクルを追加するには

  1. システムを休止します。

  2. トポロジ内の各ノードでディストリビューション エージェントを停止します。 詳細については、「 レプリケーション エージェント実行可能ファイルの概念 」または「 レプリケーション エージェントの開始と停止 (SQL Server Management Studio)」を参照してください。

  3. CREATE TABLE ステートメントを実行して、トポロジ内の各ノードに新しいテーブルを追加します。

  4. bcp ユーティリティを使用して、すべてのノードで新しいテーブルのデータを手動で一括コピーします。

  5. sp_addarticleを実行して、トポロジ内の各ノードに新しいアーティクルを作成します。 詳細については、 アーティクルの定義を参照してください。

    sp_addarticleが実行されると、レプリケーションによってトポロジ内のサブスクリプションにアーティクルが自動的に追加されます。

  6. トポロジ内の各ノードでディストリビューション エージェントを再起動します。

パブリケーション データベースにスキーマを変更するには

  1. システムを休止します。

  2. データ定義言語 (DDL) ステートメントを実行して、パブリッシュされたテーブルのスキーマを変更します。 サポートされているスキーマの変更の詳細については、「 パブリケーション データベースでスキーマを変更する」を参照してください。

  3. パブリッシュされたテーブルのアクティビティを再開する前に、システムをもう一度休止します。 これにより、新しいデータ変更がレプリケートされる前に、スキーマの変更がすべてのノードで確実に受信されます。

次の例では、2 つのノードを持つ既存のピアツーピア レプリケーション トポロジに新しいテーブル アーティクルを追加する方法を示します。

-- Create the new table at both nodes.
CREATE TABLE AdventureWorks2012.dbo.ProductTest (column1 int, Column2 int);
CREATE TABLE AdventureWorks2012Replica.dbo.ProductTest (column1 int, Column2 int);
GO
REM Bulk insert data into both the publication and subscription databases.
REM The BCP format depends on the snapshot format (native or character).
REM Execute at the command prompt.

bcp AdventureWorks2012..ProductTest in NewTable.bcp -T -SMYPUBLISHER n/c
bcp AdventureWorks2012Replica..ProductTest in NewTable.bcp -T -SMYPUBLISHER n/c
--- Add the article to the publication.
DECLARE @publication AS sysname;
DECLARE @newtable AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @newtable = N'ProductTest';

USE AdventureWorks2012

EXEC sp_addarticle 
  @publication = @publication,
  @article = @newtable,
  @source_table = @newtable,
  @destination_table = @newtable,
  @force_invalidate_snapshot = 0;
GO

こちらもご覧ください

レプリケーション管理に関する FAQ
SQL Server データベースのバックアップと復元
ピア ツー ピア トランザクション レプリケーション