Удаление репликации вручную в SQL Server

В этой статье объясняется, как вручную удалить репликацию в SQL Server.

Исходная версия продукта: SQL Server
Исходный номер базы знаний: 324401

Итоги

В этой статье описывается удаление репликации с компьютера под управлением Microsoft SQL Server. Чтобы удалить репликацию, необходимо удалить подписки, публикации и распространитель, настроенный для репликации. Репликацию можно удалить, выполнив скрипт Transact-SQL, созданный SQL Server Enterprise Manager или SQL Server Management Studio. Однако если вы не можете создать скрипт Transact-SQL для удаления репликации, можно вручную удалить репликацию с помощью системных хранимых процедур и других инструкций Transact-SQL. В этой статье содержатся сведения о системных хранимых процедурах, которые можно использовать в этом процессе.

Примечание.

Дополнительные сведения о системных хранимых процедурах, упомянутых в этой статье, см. в электронной документации по SQL Server.

Удаление репликации вручную

Репликацию можно удалить вручную с помощью системных хранимых процедур и других инструкций Transact-SQL. Чтобы полностью удалить репликацию, выполните следующие действия.

  1. Удалите все подписки, настроенные для репликации.
  2. Удалите все публикации, настроенные для репликации.
  3. Удалите распространитель, настроенный для репликации.

Примечание.

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

Удаление подписок

Чтобы удалить подписки из экземпляра SQL Server, можно использовать следующие хранимые процедуры и соответствующие параметры:

  • sp_dropsubscription : можно использовать системную sp_dropsubscription хранимую процедуру для удаления подписок в определенную статью, публикацию или набор подписок на издателе. Хранимую процедуру необходимо выполнить на сервере издателя в базе данных публикации.

  • sp_droppullsubscription : можно использовать системную sp_droppullsubscription хранимую процедуру для удаления подписки в текущей базе данных подписчика. Необходимо выполнить хранимую процедуру на подписчике в базе данных подписки по запросу.

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

  • sp_dropmergepullsubscription : для удаления подписки на вытягивание слиянием можно использовать системную sp_dropmergepullsubscription хранимую процедуру. Необходимо выполнить хранимую процедуру на подписчике в базе данных подписки по запросу.

Удаление подписок моментальных снимков

Чтобы удалить push-подписку на все статьи публикации моментальных снимков, выполните следующий сценарий на издателе:

USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'

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

  1. Выполните следующий скрипт SQL на подписчике:

    USE < **Subscription database name** >
    GO
    EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publication database name>', @publication = N'<Publication name>'
    
  2. Выполните следующий сценарий на издателе:

    USE < **Publication database name** >
    GO
    EXEC sp_dropsubscription @publication=N'<Publication name>', @subscriber = N'<Subscriber server name>', @article = N'all', @destination_db = N'all'
    

Удаление транзакционной подписки

Чтобы удалить push-подписку на все статьи для публикации транзакций, выполните следующий сценарий на издателе:

USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'

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

  1. Выполните следующий скрипт на подписчике:

    USE < **Subscription database name** >
    GO
    EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>', @publication = N'<Publication name>'
    
  2. Выполните следующий сценарий на издателе:

    USE < **Publication database name** >
    GO
    EXEC sp_dropsubscription @publication =N'<Publication name>', @subscriber = N'<Subscriber server name>', @article = N'all', @destination_db = N'<Destination database name>'
    

Удаление подписки на слияние

Чтобы удалить push-подписку, выполните следующий сценарий на издателе:

USE < **Publication database name** >
GO
EXEC sp_dropmergesubscription @publication = N'<Publication name>', @subscriber = N'<Publisher server name>', @subscriber_db = N'<Subscription database name>', @subscription_type = N'push'

Чтобы удалить подписку на вытягивание, выполните следующие действия.

  1. Выполните следующий скрипт на подписчике:

    USE < **Subscription database name** >
    GO
    EXEC sp_dropmergepullsubscription @publication = N'<Publication name>', @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>'
    
  2. Выполните следующий сценарий на издателе:

    USE < **Publication database name** >
    GO
    EXEC sp_dropmergesubscription @subscription_type = N'pull', @publication = N'<Publication name>', @subscriber = N'<Subscriber server name>', @subscriber_db = N'<Subscription database name>'
    

Удаление публикаций

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

  • sp_droppublication: для удаления публикации и статей, связанных с публикацией, можно использовать sp_droppublication системную хранимую процедуру. Необходимо выполнить хранимую процедуру на издателе в базе данных публикации.
  • sp_dropmergepublication: можно использовать системную sp_dropmergepublication хранимую процедуру для удаления публикации слиянием и агент моментальных снимков, связанной с публикацией слиянием. Статьи, связанные с публикацией, также удаляются. Необходимо выполнить хранимую процедуру на издателе в базе данных публикации.
  • sp_replicationdboption: можно использовать системную sp_replicationdboption хранимую процедуру, чтобы задать параметр базы данных репликации для текущей базы данных. Необходимо запустить хранимую процедуру на сервере издателя.

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

USE < **Publication database name** >
GO
EXEC sp_droppublication @publication = N'<Publication name>'

USE master
GO
exec sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

Чтобы удалить публикацию транзакций, выполните следующий сценарий на издателе:

USE < **Publication database name** >
GO
EXEC sp_droppublication @publication = N'<Publication name>'

USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

Чтобы удалить публикацию слиянием, выполните следующий сценарий на издателе:

USE < **Publication database name** >
GO
EXEC sp_dropmergepublication @publication = N'<Publication name>'

USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'merge publish', @value = N'false'

Удаление распространителя

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

  • sp_dropsubscriber: для удаления обозначения подписчика с зарегистрированного сервера можно использовать sp_dropsubscriber системную хранимую процедуру. Хранимая процедура удаляет запись реестра для подписчика. Хранимая процедура выполняется на издателе в базе данных публикации.

  • sp_dropdistributor: для удаления распространителя можно использовать системную sp_dropdistributor хранимую процедуру. Хранимая процедура выполняется на распространителю. Чтобы удалить назначение подписчика из Publisher, выполните следующий сценарий на издателе:

    USE master
    GO
    EXEC sp_dropsubscriber @subscriber = N'<Subscriber server name>', @reserved = N'drop_subscriptions'
    

    Чтобы удалить распространитель, выполните следующий сценарий на распространитете:

    USE master
    GO
    EXEC sp_dropdistributor @no_checks = 1
    

Использование хранимых процедур

При удалении репликации можно также использовать следующие хранимые процедуры:

  • sp_removedbreplication: можно использовать системную sp_removedbreplication хранимую процедуру для удаления всех объектов репликации из базы данных без обновления данных распространителя. Хранимую процедуру необходимо выполнить на издателе в базе данных публикации или на подписчике в базе данных подписки. Ниже приведен синтаксис для этой хранимой процедуры:

    sp_removedbreplication '<Database name>'
    
  • sp_droparticle: можно использовать системную sp_droparticle хранимую процедуру для удаления статьи из публикации моментальных снимков или публикации транзакций. Невозможно удалить статью, если одна или несколько подписок на опубликованную статью по-прежнему существует. Необходимо выполнить хранимую процедуру на издателе в базе данных публикации. Ниже приведен синтаксис для этой хранимой процедуры:

    sp_droparticle @publication = N'<Publication name>', @article = N'<Article name>', @force_invalidate_snapshot = 1
    

Ссылки

Дополнительные сведения см. в следующих разделах электронной документации по SQL Server.