Как удалить принудительную подписку (программирование репликации на языке Transact-SQL)
Принудительные подписки можно удалять программно с помощью хранимых процедур репликации. Хранимые процедуры, используемые для этого, зависят от типа публикации, к которой принадлежит подписка.
Удаление принудительной подписки на публикацию моментальных снимков или транзакций
В базе данных публикации на издателе выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_dropsubscription (Transact-SQL)). Укажите параметры @publication и @subscriber. Задайте значение all в параметре @article. Если распространитель недоступен, задайте значение 1 в параметре @ignore_distributor, чтобы удалить подписку без удаления связанных с ней объектов на распространителе (необязательно).
Чтобы удалить метаданные репликации из базы данных подписчика, на подписчике в базе данных подписки выполните хранимую процедуру sp_subscription_cleanup (Transact-SQL).
Удаление принудительной подписки на публикацию слиянием
На издателе выполните хранимую процедуру sp_dropmergesubscription (Transact-SQL), указав параметры @publication, @subscriber и @subscriber_db. Если распространитель недоступен, задайте значение 1 в параметре @ignore_distributor, чтобы удалить подписку без удаления связанных с ней объектов на распространителе (необязательно).
На подписчике в базе данных подписки выполните процедуру 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
См. также