Подскажите пожалуста, есть ли решение такой задачи:
есть две одинаковые базы (на разных компах без сетки);
изначально данные в них одинаковые. После в обоих базах происходят изменения данных, через какоето время необходимо синхронизировать данные в обоих базах.
Здравствуйте, alex_pit, Вы писали: _>Если это возможно, подскажите как это сделать!
если синхронизация автоматом, то
возможно, даже есть стандартные стредства, replication называется
можно почитать здесь
Если без сети — то только самому писать SQL который будет искать различия и объединять данные.
Если структура базы не слишком сложная то, по-моему, это лучший вариант.
Если все-таки сделать сеть — то можно использовать merge replication, но она накладывает определенные ограничения на базу и не всегда удобна.
Здравствуйте, alex_pit, Вы писали:
_>Здравствуйте, Smirnov.Anton!
_>Автоматом не подходит, возможно ли как то в ручную?
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!
Здравствуйте, Hobot Bobot, Вы писали:
HB>Если без сети — то только самому писать SQL который будет искать различия и объединять данные. HB>Если структура базы не слишком сложная то, по-моему, это лучший вариант.
HB>Если все-таки сделать сеть — то можно использовать merge replication, но она накладывает определенные ограничения на базу и не всегда удобна.
структура базы достаточно сложная, а merge replication не поможет, так как структура базы может изменяться.
По поводу HB>писать SQL который будет искать различия и объединять данные
я даже не представляю как такой запрос написать
Здравствуйте, Hobot Bobot, Вы писали:
HB>Если без сети — то только самому писать SQL который будет искать различия и объединять данные. HB>Если структура базы не слишком сложная то, по-моему, это лучший вариант.
HB>Если все-таки сделать сеть — то можно использовать merge replication, но она накладывает определенные ограничения на базу и не всегда удобна.
структура базы достаточно сложная, а merge replication не поможет, так как структура базы может изменяться.
По поводу HB>писать SQL который будет искать различия и объединять данные
я даже не представляю как такой запрос написать
Ну, я примерно так и мучался. Как надо поменять структуру — удалял репликацию, изменял структуру, восстанавливал репликацию. Единственная фишка — надо чтобы за этот короткий промежуток новых данных в базу не попадало.
Здравствуйте, alex_pit, Вы писали:
_>структура базы достаточно сложная, а merge replication не поможет, так как структура базы может изменяться.
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!
HB>Ну, я примерно так и мучался. Как надо поменять структуру — удалял репликацию, изменял структуру, восстанавливал репликацию. Единственная фишка — надо чтобы за этот короткий промежуток новых данных в базу не попадало.
Да, но при создании новой репликации, данные в обоих базах должны совпадать, а вот это как раз может и не быть
Здравствуйте, alex_pit, Вы писали:
_>Здравствуйте, Hobot Bobot, Вы писали:
HB>>Ну, я примерно так и мучался. Как надо поменять структуру — удалял репликацию, изменял структуру, восстанавливал репликацию. Единственная фишка — надо чтобы за этот короткий промежуток новых данных в базу не попадало.
_>Да, но при создании новой репликации, данные в обоих базах должны совпадать, а вот это как раз может и не быть
В общем, у меня техпроцесс выглядел так:
Надо было синхронизировать базы корпоративных сайтов в США и Украине.
Когда мне надо было поменять структуру базы я делал следующие шаги:
1. Останавливал работу обоих сайтов (это гарантировало неизменяемость данных в процессе апдейта).
2. Вручную запускал синхронизацию.
3. Удалял репликацию.
4. На обеих базах выполнял один и тот же скрипт.
5. Восстанавливал репликацию
6. Запускал сайты.
В общем, это гарантировало, что на момент восстановления репликации данные в базах идентичны.
У этого метода два недостатка — во-первых, много ручной работы; во-вторых, необходимость останавливать сайты (примерно мин. на 5-10). В моем случае это решающей роли не играло, но если системе критично работать без остановок, то .
По идее, процесс удаления/установки репликации можно автоматизировать SQL скриптами, это частично решает обе проблемы. Но тут подробностей я не знаю.
Если же имеется в виду что УЖЕ есть две базы с разными данными и их надо merge, то тут я даже не знаю, что и думать.
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!
Есть складская база (рабочая), есть первоночально такая же база (контрольная).
В первый момент времени базы идентичны, затем в складской базе роисходят какието изменеия Delete Update Insert.
После работы данные из основной базы должны переносится в контрольную, там они проверяются и если надо корректируются. И так в течении месяца!
В конце месяца итоговые данные сверяются (Считается что верные данные в контрольной базе), если данные не совпадают, начинается сверка (менеджеры получают по ушам ),
и потом правильные данные из контрольной базы переливаются в основную.
в течении месяца могут проходить обновления структуры в обоих базах.
Я конечно понимаю что это звучит малость диковато, но ничего не могу сделать, руководство напрягает .
Тогда, м.б., подойдет такой вариант:
Делаем одностороннюю transactional репликацию (publisher — рабочая база, subscriber — контрольная), причем синхронизацию выполняем вручную, раз в день, "после работы". По идее такая репликация не должна затрагивать те изменения которые делались в контрольной базе до этого.
В конце месяца сверяем базы и с помощью переписываем контрольную на рабочую, предварительно удалив репликацию.
Просто единственный вариант, который мне приходит в голову, если отказаться от репликации — это обвешать триггерами изменяемые таблицы и самому вести лог изменений. Но это по-моему геморрой такой, что мало не покажется.
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!