다음을 통해 공유


피어 투 피어 토폴로지 관리(복제 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. 게시된 테이블에 대한 작업을 다시 시작하기 전에 시스템을 다시 정지합니다. 이렇게 하면 새 데이터 변경 내용을 복제하기 전에 모든 노드에서 스키마 변경 내용을 받도록 할 수 있습니다.

예제

다음 예제에서는 두 개의 노드가 있는 기존 피어 투 피어 복제 토폴로지에 새 테이블 아티클을 추가하는 방법을 보여 줍니다.

-- 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 데이터베이스 백업 및 복원
@loopback_detection