Удаление репликации вручную в 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. Чтобы полностью удалить репликацию, выполните следующие действия.
- Удалите все подписки, настроенные для репликации.
- Удалите все публикации, настроенные для репликации.
- Удалите распространитель, настроенный для репликации.
Примечание.
Системные хранимые процедуры для каждого типа репликации перечислены далее в этой статье. Используйте соответствующие хранимые процедуры в зависимости от типа репликации, которую требуется удалить.
Удаление подписок
Чтобы удалить подписки из экземпляра 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, выполните следующие действия.
Выполните следующий скрипт SQL на подписчике:
USE < **Subscription database name** > GO EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publication database name>', @publication = N'<Publication name>'
Выполните следующий скрипт на издателе:
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'
Чтобы удалить подписку по запросу на все статьи для публикации транзакций, выполните следующие действия.
Выполните следующий скрипт на подписчике:
USE < **Subscription database name** > GO EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>', @publication = N'<Publication name>'
Выполните следующий скрипт на издателе:
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'
Чтобы удалить подписку по запросу, выполните следующие действия.
Выполните следующий скрипт на подписчике:
USE < **Subscription database name** > GO EXEC sp_dropmergepullsubscription @publication = N'<Publication name>', @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>'
Выполните следующий скрипт на издателе:
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:
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по