Удаление репликации вручную в 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 системную хранимую процедуру. Хранимую процедуру необходимо выполнить на подписчике в базе данных подписки по запросу.

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

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

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

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

  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'
    

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

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

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>'
    

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

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

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 процедура позволяет задать параметр базы данных репликации для текущей базы данных. Хранимую процедуру необходимо выполнить на сервере издателя.

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

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'

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

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, выполните следующий скрипт на сайте 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 процедура позволяет удалить статью из публикации snapshot или из публикации транзакций. Вы не можете удалить статью, если одна или несколько подписок на опубликованную статью по-прежнему существуют. Хранимую процедуру необходимо выполнить на издателе в базе данных публикации. Ниже приведен синтаксис этой хранимой процедуры.

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

Ссылки

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