X-Cite
Дата: 22.01.2013 18:18:39
Добрый вечер.
Возникла проблема:
Были две репликации, в которых ходила одна таблица (на разные БД по разным репликациям (возможно одна БД была на том же сервере-издателе)).
Одну из публикаций удалили.
Каким-то боком изменились (или наоборот, не изменились) триггера на издателе на ins, upd и del (репликационные). В них оказались репликационные VIEW несуществующей публикации. Соответственно VIEW тоже не существуют.
Самое интересное что в sysmergepublications на издателе по pubid удаленной публикации не существует. А на подписчиках эта запись в этой же таблице есть.
При создании новой публикации на эти таблицы триггеры изменились, но не надолго, через какое-то время опять в них появились обращения к несуществующим VIEW.
При попытке изменения триггеров на издателе вручную, указания корректных VIEW, репликация распространила триггеры на подписчиков, что сделать была не должна, т.к. одни и те же репликационные триггеры на издателе и подписчике отличаются.
Вопрос: Из-за чего это могло произойти?
Проблема:
Сейчас временно удалили все подписки на эту публикацию, чтобы пользователи могли работать. Завтра будем чистить системные таблицы от мусора. Есть вопрос, куда и на что обратить внимание?
Предложение такое: Мультискриптом одновременно на всех подписчиках удалим по удаленному pubid данные из sysmergepublications и sysmergesubscriptions, чтобы ни одна репликация не принесла мусор обратно.
Возможно попробуем воспользоваться sp_dropmergepullsubscription и sp_dropmergesubscription для всех репликаций в которые входила эта таблица (4 таблицы). Однако мне не верится, что при создании новой публикации после всех действий, триггеры будут корректно созданы.
Где можно посмотреть откуда сервер берет данные для триггеров, когда их создает? Тогда можно будет выцепить, почему он берет несуществующие VIEW и откуда?
X-Cite
Дата: 23.01.2013 18:13:57
Проблему пока решили так:
1)Удаление подписок и публикации, в которой возникли проблемы.
2)Исключение таблиц из других репликаций (на всякий случай).
3)Затем ручным удалением по pubid записей из sysmergepublications и sysmergesubscriptions по всем серверам связанных между собой репликациями (издатели, переиздатели, подписчики) одновременно и несколько раз. т.к. репликаций много, ходят часто и в момент удаления с одного сервера они приходят на него же с 1-ой репликацией с другого сервера.
4) Новой настройкой публикации и подписок, с предварительным ручным синхронизированием данных между издаетелем и подписчиком.
5) включение таблиц в другие репликации.
Пока все хорошо. Триггеры корректные.