방법: 게시 삭제(복제 Transact-SQL 프로그래밍)

복제 저장 프로시저를 사용하여 프로그래밍 방식으로 게시를 삭제할 수 있습니다. 사용하는 저장 프로시저는 삭제하려는 게시의 유형에 따라 달라집니다.

[!참고]

게시를 삭제해도 게시 데이터베이스의 게시된 개체 또는 구독 데이터베이스의 해당 개체는 제거되지 않습니다. 필요한 경우 DROP <object> 명령을 사용하여 이러한 개체를 수동으로 제거할 수 있습니다.

스냅숏 또는 트랜잭션 게시를 삭제하려면

  1. 다음 중 하나를 수행합니다.

    • 단일 게시를 삭제하려면 게시 데이터베이스의 게시자에서 sp_droppublication을 실행합니다.

    • 모든 게시를 삭제하고 게시된 데이터베이스에서 모든 복제 개체를 제거하려면 게시자에서 sp_removedbreplication을 실행합니다. @type에 값 tran을 지정합니다. (옵션) 배포자에 액세스할 수 없거나 데이터베이스의 상태가 주의 대상 또는 오프라인인 경우 @force에 값 1을 지정합니다. (옵션) 게시 데이터베이스에서 sp_removedbreplication이 실행되지 않은 경우 @dbname에 데이터베이스 이름을 지정합니다.

      [!참고]

      @force에 값 1을 지정하면 데이터베이스에 복제 관련 게시 개체가 남을 수 있습니다.

  2. (옵션) 이 데이터베이스에 다른 게시가 없으면 sp_replicationdboption(Transact-SQL)을 실행하여 스냅숏 또는 트랜잭션 복제를 사용하여 현재 데이터베이스를 게시할 수 없도록 해제합니다.

  3. (옵션) 구독 데이터베이스의 구독자에서 sp_subscription_cleanup을 실행하여 구독 데이터베이스에 남은 모든 복제 메타데이터를 제거합니다.

병합 게시를 삭제하려면

  1. 다음 중 하나를 수행합니다.

    • 단일 게시를 삭제하려면 게시 데이터베이스의 게시자에서 sp_dropmergepublication(Transact-SQL)을 실행합니다.

    • 모든 게시를 삭제하고 게시된 데이터베이스에서 모든 복제 개체를 제거하려면 게시자에서 sp_removedbreplication을 실행합니다. @type에 값 merge를 지정합니다. (옵션) 배포자에 액세스할 수 없거나 데이터베이스의 상태가 주의 대상 또는 오프라인인 경우 @force에 값 1을 지정합니다. (옵션) 게시 데이터베이스에서 sp_removedbreplication이 실행되지 않은 경우 @dbname에 데이터베이스 이름을 지정합니다.

      [!참고]

      @force에 값 1을 지정하면 데이터베이스에 복제 관련 게시 개체가 남을 수 있습니다.

  2. (옵션) 이 데이터베이스에 다른 게시가 없으면 sp_replicationdboption(Transact-SQL)을 실행하여 병합 복제를 사용하여 현재 데이터베이스를 게시할 수 없도록 해제합니다.

  3. (옵션) 구독 데이터베이스의 구독자에서 sp_mergesubscription_cleanup(Transact-SQL)을 실행하여 구독 데이터베이스에 남은 모든 복제 메타데이터를 제거합니다.

다음 예에서는 트랜잭션 게시를 제거하고 데이터베이스에 대한 트랜잭션 게시를 해제하는 방법을 보여 줍니다. 이 예에서는 모든 구독이 이전에 제거되었다고 가정합니다. 자세한 내용은 방법: 끌어오기 구독 삭제(복제 Transact-SQL 프로그래밍) 또는 방법: 밀어넣기 구독 삭제(복제 Transact-SQL 프로그래밍)를 참조하십시오.

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 

-- Remove a transactional publication.
USE [AdventureWorks]
EXEC sp_droppublication @publication = @publication;

-- Remove replication objects from the database.
USE [master]
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'publish', 
  @value = N'false';
GO

다음 예에서는 병합 게시를 제거하고 데이터베이스에 대한 병합 게시를 해제하는 방법을 보여 줍니다. 이 예에서는 모든 구독이 이전에 제거되었다고 가정합니다. 자세한 내용은 방법: 끌어오기 구독 삭제(복제 Transact-SQL 프로그래밍) 또는 방법: 밀어넣기 구독 삭제(복제 Transact-SQL 프로그래밍)를 참조하십시오.

DECLARE @publication AS sysname
DECLARE @publicationDB    AS sysname
SET @publication = N'AdvWorksSalesOrdersMerge' 
SET @publicationDB = N'AdventureWorks'

-- Remove the merge publication.
USE [AdventureWorks]
EXEC sp_dropmergepublication @publication = @publication;

-- Remove replication objects from the database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'merge publish', 
  @value = N'false'
GO