Как удалить публикацию (программирование репликации на языке Transact-SQL)
Публикации могут быть удалены программно, с помощью хранимых процедур репликации. Какие именно хранимые процедуры для этого применяются, зависит от типа удаляемой публикации.
Примечание |
---|
При удалении публикации опубликованные объекты базы данных публикации и связанные с ними объекты базы данных подписки не удаляются. При необходимости их необходимо удалить вручную, при помощи инструкции DROP <object>. |
Удаление публикации моментальных снимков или транзакций
Выполните одно из следующих действий.
Для удаления отдельной публикации в базе данных публикации на издателе выполните инструкцию sp_droppublication.
Чтобы удалить все публикации и удалить все объекты репликации из опубликованной базы данных, выполните процедуру sp_removedbreplication на издателе. Укажите значение tran в параметре @type. Если распространитель недоступен или база данных находится в подозрительном состоянии или в автономном режиме, укажите значение 1 в параметре @force (необязательно). Укажите имя базы данных в параметре @dbname, если процедура sp_removedbreplication не выполнялась в базе данных публикации (необязательно).
Примечание Если задать значение 1 в параметре @force, в базе данных могут остаться объекты публикации, связанные с репликацией.
Если база данных содержит только одну публикацию, то для того, чтобы отключить публикацию текущей базы данных в репликации моментальных снимков или транзакции, необходимо выполнить хранимую процедуру sp_replicationdboption (Transact-SQL) (необязательно).
(Необязательно) Чтобы удалить все метаданные репликации, оставшиеся в базе данных подписки, на подписчике в базе данных публикации выполните хранимую процедуру sp_subscription_cleanup.
Удаление публикации слиянием
Выполните одно из следующих действий.
Чтобы удалить отдельную публикацию, в базе данных публикации на издателе выполните инструкцию sp_dropmergepublication (Transact-SQL).
Чтобы удалить все публикации и удалить все объекты репликации из опубликованной базы данных, выполните процедуру sp_removedbreplication на издателе. Укажите значение merge в параметре @type. Если распространитель недоступен или база данных находится в подозрительном состоянии или в автономном режиме, укажите значение 1 в параметре @force (необязательно). Укажите имя базы данных в параметре @dbname, если процедура sp_removedbreplication не выполнялась в базе данных публикации (необязательно).
Примечание Если задать значение 1 в параметре @force, в базе данных могут остаться объекты публикации, связанные с репликацией.
Если база данных содержит только одну публикацию, то для того чтобы отключить публикацию текущей базы данных в репликации слиянием, необходимо выполнить хранимую процедуру sp_replicationdboption (Transact-SQL) (необязательно).
(Необязательно) Чтобы удалить все метаданные репликации, оставшиеся в базе данных подписки, на подписчике в базе данных публикации выполните хранимую процедуру 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