Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как вручную удалить репликацию в 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хранимую процедуру. Необходимо выполнить хранимую процедуру на подписчике в базе данных подписки по запросу.
Удаление подписок моментальных снимков
Чтобы удалить push-подписку на все статьи публикации моментальных снимков, выполните следующий сценарий на издателе:
USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'
Чтобы удалить подписку на моментальный снимок по запросу ко всем статьям для публикации моментальных снимков, выполните следующие действия.
Выполните следующий скрипт 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'
Удаление транзакционной подписки
Чтобы удалить push-подписку на все статьи для публикации транзакций, выполните следующий сценарий на издателе:
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>'
Удаление подписки на слияние
Чтобы удалить 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'
Чтобы удалить подписку на вытягивание, выполните следующие действия.
Выполните следующий скрипт на подписчике:
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хранимую процедуру, чтобы задать параметр базы данных репликации для текущей базы данных. Необходимо запустить хранимую процедуру на сервере издателя.
Чтобы удалить публикацию моментальных снимков, выполните следующий сценарий на издателе:
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.