Администратор 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 не помогает