Как удалить принудительную подписку (программирование репликации на языке Transact-SQL)

Принудительные подписки можно удалять программно с помощью хранимых процедур репликации. Хранимые процедуры, используемые для этого, зависят от типа публикации, к которой принадлежит подписка.

Удаление принудительной подписки на публикацию моментальных снимков или транзакций

  1. В базе данных публикации на издателе выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_dropsubscription (Transact-SQL)). Укажите параметры @publication и @subscriber. Задайте значение all в параметре @article. Если распространитель недоступен, задайте значение 1 в параметре @ignore_distributor, чтобы удалить подписку без удаления связанных с ней объектов на распространителе (необязательно).

  2. Чтобы удалить метаданные репликации из базы данных подписчика, на подписчике в базе данных подписки выполните хранимую процедуру sp_subscription_cleanup (Transact-SQL).

Удаление принудительной подписки на публикацию слиянием

  1. На издателе выполните хранимую процедуру sp_dropmergesubscription (Transact-SQL), указав параметры @publication, @subscriber и @subscriber_db. Если распространитель недоступен, задайте значение 1 в параметре @ignore_distributor, чтобы удалить подписку без удаления связанных с ней объектов на распространителе (необязательно).

  2. На подписчике в базе данных подписки выполните процедуру sp_mergesubscription_cleanup (Transact-SQL). Задайте значения для параметров @publisher, @publisher_db и @publication. Тем самым из базы данных подписки удаляются метаданные слияния.

Пример

В этом примере удаляется принудительная подписка на публикацию транзакций.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- This batch is executed at the Publisher to remove 
-- a pull or push subscription to a transactional publication.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);

USE [AdventureWorks2008R2;]
EXEC sp_dropsubscription 
  @publication = @publication, 
  @article = N'all',
  @subscriber = @subscriber;
GO

В этом примере удаляется принудительная подписка на публикацию слиянием.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- This batch is executed at the Publisher to remove 
-- a pull or push subscription to a merge publication.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2008R2Replica';

USE [AdventureWorks2008R2]
EXEC sp_dropmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB;
GO