Удаление принудительной подписки от подписчика с помощью T-SQL в репликации слиянием

У меня есть сервер издателя и сервер подписчика, которые синхронизируются с помощью репликации слиянием. Когда я использую мастер для удаления репликации, в окне входа в систему меня просят войти на сервер подписчика и удалить его подписку, но когда я использую сгенерированный скрипт для удаления репликации, подписка на подписчике не удаляется. Как я могу это сделать с помощью TSQL? Другими словами: я хочу подключиться к подписчику и также удалить запись о подписке на подписчике с помощью T-SQL


person Mohammad Sheykholeslam    schedule 21.04.2012    source источник


Ответы (2)


Чтобы отказаться от принудительной подписки слиянием, вы должны подключиться как к издателю, так и к подписчику. Согласно Как удалить принудительную подписку (программирование на Transact-SQL репликации) - выполнить sp_dropmergesubscription на Издателе и sp_mergesubscription_cleanup на подписчике.

person Brandon Williams    schedule 21.04.2012
comment
Это точные ответы, но я сказал, что хочу подключиться к подписчику с помощью TSQL, а затем выполнить процедуру sp_mergesubscription_cleanup. На самом деле я хочу выполнить команду удаленно. Как мне это сделать? - person Mohammad Sheykholeslam; 22.04.2012
comment
Если вы можете подключиться к издателю с подписчика, вы можете выполнить sp_dropmergesubscription, а затем выполнить sp_mergesubscription_cleanup на подписчике. У меня обычно есть соединение, открытое как для издателей, так и для подписчиков в SSMS при выполнении такого обслуживания репликации. - person Brandon Williams; 22.04.2012

Наконец-то я нашел решение своей проблемы:

Я использовал Linked Server для создания подключения к удаленному серверу:

exec sp_addlinkedserver 'RemoteServer\PeerInstance', N'SQL Server'

exec sp_addlinkedsrvlogin 'RemoteServer\PeerInstant', 'true', 'sa', 'password'

exec ReplicatedDBOnMainServer.sys.sp_dropmergesubscription
@publication = N'PublicationName', 
@subscriber = N'RemoteServer\PeerInstant'

exec [RemoteServer\PeerInstant].ReplicatedDBOnRemote.sys.sp_mergesubscription_cleanup
@publisher = N'MainServer\MainInstant', 
@publisher_db = N'ReplicatedDBOnMainServer'
@publication = N'PublicationName'
person Mohammad Sheykholeslam    schedule 22.04.2012