удаление объекта из базы данных публикации sys.sp_droparticle и sp_dropsubscription - PullRequest
0 голосов
/ 19 сентября 2018

Администратор SQL Server не является моей сильной стороной.Поэтому, пожалуйста, имейте в виду, пока я объясняю, что
A SQL Server 2012 cluster участвует в Change data capture ( CDC ) попытке с использованием сторонней утилиты CDC.для того, чтобы это работало, репликация должна быть включена, без репликации CDC не будет работать.CDC выбирает более 2000 нечетных таблиц из SQL Server в базе данных Db1.Из них мы обнаружили, что около 200+ таблиц подвергаются truncate и load по сравнению с приращениями.Таким образом, мы удалили их из наших списков CDC, но поскольку репликация включена на уровне БД, нам также необходимо удалить их из publication database, чтобы у усечений, происходящих с этим списком исключений, не было необходимости replication отключать уровень БД (иначе говоря, обрезать до этих таблиц).и replication может сосуществовать. Как известно, для усечения необходимо отключить репликацию. Код в prod, так что замена truncate на delete теперь не вариант, кроме того факта, что для миллиарда строкудаление таблиц будет дорогим и отнимает много времени)
Выше указано требование.Итак, основываясь на том, что если можно найти лучшее решение, дайте мне знать
Что я пробовал:

EXEC sys.sp_droparticle @publication = 'pub', @article = 'art', @force_invalidate_snapshot = 1

Ошибка, которую я получаю

Msg 14013, Level 16, State 1, Procedure sp_MSrepl_droparticle, Line 104 [Batch Start Line 2]
This database is not enabled for publication.

Другой SP

DECLARE @subscriber AS sysname;

EXEC sp_dropsubscription @publication = 'AR_PUBLICATION_00010', @article = 'BPA_BRGR_RUL_GRP_R' ,@subscriber=@subscriber

Msg 14013, Level 16, State 1, Procedure sp_MSrepl_dropsubscription, Line 55 [Batch Start Line 1]
This database is not enabled for publication.


Но с помощью GUI я могу снять таблицы, которые мне не нужны в этом publication.(щелкните правой кнопкой мыши публикацию -> свойства -> статьи -> отметьте / снимите галочку с того, что вы хотите исключить).У меня нет subscription, просто есть публикация.
Какой бы код я ни запускал через GUI выше, я могу определить.работать через T-SQL Но я не знаю, какой код был запущен?Как мне сделать это, используя подход сценариев.У меня есть более 200 таблиц, и снятие отметки 1 на 1 не помогает

1 Ответ

0 голосов
/ 19 сентября 2018

Какой бы код я ни запускал через графический интерфейс выше, я могу определить.работать через T-SQL Но я не знаю, какой код был запущен?Как мне сделать это с помощью сценариев.

SSMS не имеет специального API.Все, что он делает, он делает через TSQL.Поэтому используйте SQL Profiler, чтобы посмотреть, что делает SSMS, и запишите сценарий.

...