
У нас есть пара серверов SQL2000, которые синхронизируют несколько баз данных с помощью репликации слиянием. На каком-то этапе за последние несколько месяцев агент слияния для одной из баз данных исчез. Трудно сказать, когда это произошло, эта система на самом деле используется всего пару месяцев пару раз в год.
Насколько я могу судить (я не эксперт по репликации), подписки и публикации все еще существуют, но одна из них больше не выполняет репликацию слиянием из-за отсутствия агента слияния. Другая отлично выполняет репликацию слиянием.
Схема между базами данных осталась прежней, но данные изменились. На сервере подписчика данные более новые, чем на сервере издателя.
Как лучше всего вернуть merge agent обратно? Я посмотрел в BOL, прошерстил интернет, все эти репликационные штуки сбивают с толку и пугают!
решение1
Да, это страшно.
Я помню, что некоторое время назад, если репликация не проводилась по крайней мере каждые 2 недели (я думаю), по умолчанию подписка истекала и исчезала. Прошло много лет с тех пор, как я делал это, так что это действительно туманно. Для нас, когда конечное использование уходило в отпуск на 2 недели, подписка рабочих станций истекала (до эры высокоскоростного интернета мы использовали репликацию слиянием для полевых подразделений).
Мы изменили настройку на 6 месяцев до истечения срока действия.
Не знаю, в этом ли проблема, но было много бессонных ночей и головных болей из-за того, что нам нужно было реплицировать проект... и кошмаров, когда мы спали.
EDIT: Я только что вспомнил еще кое-что. Репликация будет работать с разрешениями, которые использует учетная запись SQL Agent. Поэтому, если возникнут какие-либо проблемы с учетной записью, которую использует служба SQL Agent, это негативно скажется на репликации.
решение2
Я тоже не большой эксперт по репликации, но когда нам приходится переделывать репликацию слиянием, я просто убеждаюсь, что у издателя есть последние данные с помощью инструмента сравнения данных SQL, и воссоздаю все заново. Не знаю, подходит ли это вам, но наши базы данных довольно маленькие и географически не удалены.
Инструмент, который мы используем, — Apex SQL Data Diff. Я уверен, что есть и множество других доступных вариантов.