ピア ツー ピア トポロジを管理する方法 (レプリケーション Transact-SQL プログラミング)
ピア ツー ピア トポロジの管理は通常のトランザクション レプリケーション トポロジの管理と似ていますが、特別な考慮が必要な部分が数多くあります。ピア ツー ピア トポロジの管理が通常のトポロジ管理と最も異なる点は、ある種の変更を行うときにシステムを停止する必要があることです。システムを停止するときには、すべてのノードでパブリッシュ済みテーブルの利用を停止し、各ノードが他のすべてのノードの変更を受け取っていることを確認します。詳細については、「レプリケーション トポロジを停止する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
既存の構成に新しいノードを追加するには
システムを停止します。
既存のノードと同じように、新しいノードでパブリケーションとサブスクリプションを作成します。詳細については、「ピア ツー ピア トランザクション レプリケーションを構成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
既存の構成にアーティクルを追加するには
システムを停止します。
トポロジ内の各ノードでディストリビューション エージェントを停止します。詳細については、「レプリケーション エージェント実行可能ファイルのプログラミング」または「レプリケーション エージェントの起動および停止方法 (SQL Server Management Studio)」を参照してください。
CREATE TABLE ステートメントを実行して、トポロジ内の各ノードに新しいテーブルを追加します。
bcp ユーティリティを使用して、全ノードの新しいテーブルにデータを一括コピーします。詳細については、「bcp ユーティリティ」を参照してください。
sp_addarticle (Transact-SQL) を実行して、トポロジ内の各ノードに新しいアーティクルを作成します。詳細については、「アーティクルを定義する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
メモ : sp_addarticle (Transact-SQL) の実行後、レプリケーションによってトポロジ内のサブスクリプションにアーティクルが自動的に追加されます。 トポロジ内の各ノードでディストリビューション エージェントを再起動します。
パブリケーション データベースのスキーマを変更するには
システムを停止します。
データ定義言語 (DDL) ステートメントを実行して、パブリッシュ済みテーブルのスキーマを変更します。サポートされるスキーマ変更の詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。
パブリッシュ済みテーブルの利用を再開する前に、再びシステムを停止します。これにより、新しいデータ変更がレプリケートされる前に、すべてのノードでスキーマ変更が受け取られます。
使用例
次の例は、2 つのノードを持つ既存のピア ツー ピア レプリケーション トポロジに新しいテーブル アーティクルを追加する方法を示します。
-- Create the new table at both nodes.
CREATE TABLE AdventureWorks.dbo.ProductTest (column1 int, Column2 int);
CREATE TABLE AdventureWorksReplica.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 AdventureWorks..ProductTest in NewTable.bcp T SMYPUBLISHER n/c
bcp AdventureWorksReplica..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 AdventureWorks
EXEC sp_addarticle
@publication = @publication,
@article = @newtable,
@source_table = @newtable,
@destination_table = @newtable,
@force_invalidate_snapshot = 0;
GO
参照
その他の技術情報
レプリケーションの管理
SQL Server でのデータベースのバックアップおよび復元
ピア ツー ピア トランザクション レプリケーション