다음을 통해 공유


아티클 삭제

이 항목에서는 Transact-SQL 또는 RMO(복제 관리 개체)를 사용하여 SQL Server 2012에서 아티클을 삭제하는 방법에 대해 설명합니다. 아티클을 삭제할 수 있는 조건, 아티클 삭제로 인해 새 스냅숏 또는 구독 다시 초기화가 필요한지 여부에 대한 자세한 내용은 기존 게시에 대한 아티클 추가 및 삭제를 참조하십시오.

항목 내용

  • 아티클을 삭제하려면:

    Transact-SQL

    RMO(복제 관리 개체)

Transact-SQL 사용

아티클은 복제 저장 프로시저를 사용하여 프로그래밍 방식으로 삭제할 수 있습니다. 사용되는 저장 프로시저는 아티클이 속한 게시 유형에 따라 달라집니다.

스냅숏 또는 트랜잭션 게시에서 아티클을 삭제하려면

  1. sp_droparticle(Transact-SQL)을 실행하여 @publication에 지정된 게시에서 @article에 지정된 아티클을 삭제합니다. @force_invalidate_snapshot 값을 1로 지정합니다.

  2. (옵션) 게시된 개체를 데이터베이스에서 완전히 제거하려면 게시 데이터베이스의 게시자에서 DROP <objectname> 명령을 실행합니다.

병합 게시에서 아티클을 삭제하려면

  1. sp_dropmergearticle(Transact-SQL)을 실행하여 @publication에 지정된 게시에서 @article에 지정된 아티클을 삭제합니다. 필요한 경우 @force_invalidate_snapshot 값과 @force_reinit_subscription 값을 1로 지정합니다.

  2. (옵션) 게시된 개체를 데이터베이스에서 완전히 제거하려면 게시 데이터베이스의 게시자에서 DROP <objectname> 명령을 실행합니다.

예(Transact-SQL)

다음 예에서는 트랜잭션 게시에서 아티클을 삭제합니다. 이로 인해 기존 스냅숏이 무효화되므로 @force_invalidate_snapshot 매개 변수 값이 1로 지정됩니다.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @article = N'Product'; 

-- Drop the transactional article.
USE [AdventureWorks2012]
EXEC sp_droparticle 
  @publication = @publication, 
  @article = @article,
  @force_invalidate_snapshot = 1;
GO

다음 예에서는 병합 게시에서 두 개의 아티클을 삭제합니다. 이로 인해 기존 스냅숏이 무효화되므로 @force_invalidate_snapshot 매개 변수 값이 1로 지정됩니다.

DECLARE @publication AS sysname;
DECLARE @article1 AS sysname;
DECLARE @article2 AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article1 = N'SalesOrderDetail'; 
SET @article2 = N'SalesOrderHeader'; 

-- Remove articles from a merge publication.
USE [AdventureWorks]
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @article1,
  @force_invalidate_snapshot = 1;
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @article2,
  @force_invalidate_snapshot = 1;
GO

DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Drop the merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_dropmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the merge join filter between Employee and SalesOrderHeader.
EXEC sp_dropmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table3,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the Employee table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table1,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

RMO(복제 관리 개체) 사용

RMO(복제 관리 개체)를 사용하여 프로그래밍 방식으로 아티클을 삭제할 수 있습니다. 아티클을 삭제하는 데 사용하는 RMO 클래스는 아티클이 속한 게시 유형에 따라 달라집니다.

스냅숏 또는 트랜잭션 게시에 속한 아티클을 삭제하려면

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.

  2. TransArticle 클래스의 인스턴스를 만듭니다.

  3. Name, PublicationNameDatabaseName 속성을 설정합니다.

  4. ConnectionContext 속성에 대해 1단계에서 만든 연결을 설정합니다.

  5. IsExistingObject 속성을 확인하여 아티클이 존재하는지 확인합니다. 이 속성의 값이 false이면 3단계에서 아티클 속성이 올바르게 정의되지 않았거나 아티클이 없는 것입니다.

  6. Remove 메서드를 호출합니다.

  7. 모든 연결을 닫습니다.

병합 게시에 속한 아티클을 삭제하려면

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.

  2. MergeArticle 클래스의 인스턴스를 만듭니다.

  3. Name, PublicationNameDatabaseName 속성을 설정합니다.

  4. ConnectionContext 속성에 대해 1단계에서 만든 연결을 설정합니다.

  5. IsExistingObject 속성을 확인하여 아티클이 존재하는지 확인합니다. 이 속성의 값이 false이면 3단계에서 아티클 속성이 올바르게 정의되지 않았거나 아티클이 없는 것입니다.

  6. Remove 메서드를 호출합니다.

  7. 모든 연결을 닫습니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

참고 항목

개념

기존 게시에 대한 아티클 추가 및 삭제

복제 시스템 저장 프로시저 개념