Как отключить публикацию и распространение (программирование репликации на языке Transact-SQL)
Публикацию и распространение можно отключить программно с помощью хранимых процедур репликации.
Отключение публикации и распространения
Остановите все задания, связанные с репликацией. Список имен задач см. в подразделе «Безопасность агентов при работе с агентом SQL Server» раздела Модель безопасности агента репликации.
На каждом подписчике в базе данных подписки выполните хранимую процедуру sp_removedbreplication, чтобы удалить объекты репликации из базы данных. Эта хранимая процедура не удаляет задания репликации на распространителе.
На издателе в базе данных публикации выполните хранимую процедуру sp_removedbreplication, чтобы удалить объекты репликации из базы данных.
Если издатель использует удаленный распространитель, выполните хранимую процедуру sp_dropdistributor.
На распространителе выполните хранимую процедуру sp_dropdistpublisher. Эта хранимая процедура должна запускаться по разу для каждого издателя, зарегистрированного на распространителе.
На распространителе выполните хранимую процедуру sp_dropdistributiondb, чтобы удалить базу данных распространителя. Эта хранимая процедура должна запускаться на распространителе, по одному разу для каждой базы данных распространителя. При этом также удаляются любые задания агента чтения очереди, связанные с базой данных распространителя.
На распространителе выполните хранимую процедуру sp_dropdistributor, чтобы удалить с сервера обозначение распространителя.
Примечание Если все объекты публикации репликации и распространения не удалены перед выполнением хранимых процедур sp_dropdistpublisher и sp_dropdistributor, эти процедуры возвратят ошибку. Чтобы удалить при удалении издателя и распространителя все объекты, связанные с репликацией, в параметре @no_checks должно быть задано значение 1. Если издатель или распространитель находятся в автономном режиме или недоступны, в параметре @ignore_distributor можно задать значение 1, чтобы их можно было удалить; однако любые оставшиеся объекты публикации и распространения придется удалять вручную.
Пример
В этом примере сценария удаляются объекты репликации из базы данных подписки.
-- Remove replication objects from the subscription database on MYSUB.
DECLARE @subscriptionDB AS sysname
SET @subscriptionDB = N'AdventureWorksReplica'
-- Remove replication objects from a subscription database (if necessary).
USE master
EXEC sp_removedbreplication @subscriptionDB
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".
-- Disable publishing and distribution.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB as sysname;
SET @distributionDB = N'distribution';
SET @publisher = $(DistPubServer);
SET @publicationDB = N'AdventureWorks';
-- Disable the publication database.
USE [AdventureWorks]
EXEC sp_removedbreplication @publicationDB;
-- Remove the registration of the local Publisher at the Distributor.
USE master
EXEC sp_dropdistpublisher @publisher;
-- Delete the distribution database.
EXEC sp_dropdistributiondb @distributionDB;
-- Remove the local server as a Distributor.
EXEC sp_dropdistributor;
GO
См. также