Транзакционня репликация и версии процедур

Жаргал

привет.Подскажите, почему так происходит.есть транзакционная репликация при помощи процедур.Имеем две проблемы.1. при вставке данных на издателе, соответсвенно посылается команда на подписчик, где есть индекс уникальный на не ключевых полях.так вот почему то выскакивает ошибка, что не может вставить запись, хотя проверенно что запись будет уникальной, та же команда из QA проходит на ура. более того ошибка вываливается неизвестно как.. на один сервер команда уйдет нормально , а на другой сломается.. 2. время от времени появляется сообщение о том что на подписчике отсутсвует процедура, например dbo.sp_del_J. хотя она там есть.. просмотрт лога ошибок говорить что не найдена процедура версии 2 dbo.sp_del_J;2., хотя в настройках и свойствах ничего про версию не указано.как с этим бороться.. я понимаю что просто исправление в свойствах с последующей реинициализацией даст выход, но серверов много и хотелось бы разобраться в корне этой проблемы.
5 ответов

Жаргал

Версии серверов и сервиспаков везде одинаковые стоят?


Жаргал

Да.


Жаргал

так вот почему то выскакивает ошибка, что не может вставить запись
Текст ошибки приведите. Там причина точно в этом уникальном индексе? Прямо и имя его указано?
хотя проверенно что запись будет уникальной, та же команда из QA проходит на ура
Когда вы вставляете ее из QA и когда срабатывает репл.агент, существующие данные в таблице могут быть разными.Триггера какие-нибудь висят на таблице, кроме репликационных? Вдруг там где-нибудь делается дополнительная вставка или еще что-нибудь в этом роде. Причем так, что при срабатывает только при операциях, вызванных репл.агентов.
более того ошибка вываливается неизвестно как.. на один сервер команда уйдет нормально , а на другой сломается..
Запросто. Вы же не данные реплицируете, а команды. На разных данных выполнение одной и той же команды может приводить к разным результатам.P.S. Профайлер - друг юного энтомолога.


Жаргал

Текст ошибки приведите. Там причина точно в этом уникальном индексе? Прямо и имя его указано?
совершенно верно. Дословно ошибка "Violation of UNIQUE KEY constraint 'IX_ПсихОбследования'. Cannot insert duplicate key in object 'PsihInspections'."
Когда вы вставляете ее из QA и когда срабатывает репл.агент, существующие данные в таблице могут быть разными.
в смысле разные? я же на туже базу применяю команду
Запросто. Вы же не данные реплицируете, а команды. На разных данных выполнение одной и той же команды может приводить к разным результатам.
так в том то и дело что данные в базах фактически одинаковые.по крайней мере данные публикуются на все базы одинаковые, и индекс везде одинаковый, есть 100-% гарантия, того что на подписчике не будет записи, которой нет у издателя.


Жаргал

На ту же базу - не означает "данные одинаковы в оба момента времени". Гарантировать это вы можете, только отключив всех пользователей и оставив свой тест из QA и тест с репликацией.
крайней мере данные публикуются на все базы одинаковые, и индекс везде одинаковый, есть 100-% гарантия, того что на подписчике не будет записи, которой нет у издателя.
Сделайте сверку данных. Сказок же не бывает - если вылезает "Violation of UNIQUE KEY" - значит, делается попытка вставки записи с ключом, который уже есть в таблице.Еще раз повторю вопрос о триггерах - ничего подозрительного нет?И еще раз повторю совет насчет профайлера - посмотрите, что шлется на проблемный сервер. Может, почему-то шлется не одна команда на вставку, а к примеру, две идентичные.