синхронизация в MSSQL
От: alex_pit  
Дата: 11.03.05 16:19
Оценка:
Доброго времени суток!

Подскажите пожалуста, есть ли решение такой задачи:

есть две одинаковые базы (на разных компах без сетки);
изначально данные в них одинаковые. После в обоих базах происходят изменения данных, через какоето время необходимо синхронизировать данные в обоих базах.

Если это возможно, подскажите как это сделать!
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: синхронизация в MSSQL
От: Smirnov.Anton Россия  
Дата: 12.03.05 10:53
Оценка:
Здравствуйте, alex_pit, Вы писали:
_>Если это возможно, подскажите как это сделать!
если синхронизация автоматом, то
возможно, даже есть стандартные стредства, replication называется
можно почитать здесь
Re[2]: синхронизация в MSSQL
От: alex_pit  
Дата: 14.03.05 10:29
Оценка:
Здравствуйте, Smirnov.Anton!

Автоматом не подходит, возможно ли как то в ручную?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[3]: синхронизация в MSSQL
От: Hobot Bobot США  
Дата: 15.03.05 08:00
Оценка:
Если без сети — то только самому писать 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!
Re[4]: синхронизация в MSSQL
От: alex_pit  
Дата: 15.03.05 09:22
Оценка:
Здравствуйте, Hobot Bobot, Вы писали:

HB>Если без сети — то только самому писать SQL который будет искать различия и объединять данные.

HB>Если структура базы не слишком сложная то, по-моему, это лучший вариант.

HB>Если все-таки сделать сеть — то можно использовать merge replication, но она накладывает определенные ограничения на базу и не всегда удобна.


структура базы достаточно сложная, а merge replication не поможет, так как структура базы может изменяться.
По поводу
HB>писать SQL который будет искать различия и объединять данные
я даже не представляю как такой запрос написать
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[4]: синхронизация в MSSQL
От: alex_pit  
Дата: 15.03.05 09:24
Оценка:
Здравствуйте, Hobot Bobot, Вы писали:

HB>Если без сети — то только самому писать SQL который будет искать различия и объединять данные.

HB>Если структура базы не слишком сложная то, по-моему, это лучший вариант.

HB>Если все-таки сделать сеть — то можно использовать merge replication, но она накладывает определенные ограничения на базу и не всегда удобна.


структура базы достаточно сложная, а merge replication не поможет, так как структура базы может изменяться.
По поводу
HB>писать SQL который будет искать различия и объединять данные
я даже не представляю как такой запрос написать
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[5]: синхронизация в MSSQL
От: Hobot Bobot США  
Дата: 15.03.05 10:40
Оценка:
Ну, я примерно так и мучался. Как надо поменять структуру — удалял репликацию, изменял структуру, восстанавливал репликацию. Единственная фишка — надо чтобы за этот короткий промежуток новых данных в базу не попадало.

Здравствуйте, 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!
Re[6]: синхронизация в MSSQL
От: alex_pit  
Дата: 15.03.05 15:21
Оценка:
Здравствуйте, Hobot Bobot, Вы писали:


HB>Ну, я примерно так и мучался. Как надо поменять структуру — удалял репликацию, изменял структуру, восстанавливал репликацию. Единственная фишка — надо чтобы за этот короткий промежуток новых данных в базу не попадало.


Да, но при создании новой репликации, данные в обоих базах должны совпадать, а вот это как раз может и не быть
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[7]: синхронизация в MSSQL
От: Hobot Bobot США  
Дата: 15.03.05 15:32
Оценка:
Здравствуйте, 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!
Re[8]: синхронизация в MSSQL
От: alex_pit  
Дата: 15.03.05 17:41
Оценка:
Здравствуйте, Hobot Bobot!

Задача стоит немного другая.

Есть складская база (рабочая), есть первоночально такая же база (контрольная).
В первый момент времени базы идентичны, затем в складской базе роисходят какието изменеия Delete Update Insert.

После работы данные из основной базы должны переносится в контрольную, там они проверяются и если надо корректируются. И так в течении месяца!
В конце месяца итоговые данные сверяются (Считается что верные данные в контрольной базе), если данные не совпадают, начинается сверка (менеджеры получают по ушам ),
и потом правильные данные из контрольной базы переливаются в основную.

в течении месяца могут проходить обновления структуры в обоих базах.

Я конечно понимаю что это звучит малость диковато, но ничего не могу сделать, руководство напрягает .
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[9]: синхронизация в MSSQL
От: Hobot Bobot США  
Дата: 16.03.05 07:15
Оценка:
Тогда, м.б., подойдет такой вариант:
Делаем одностороннюю 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!
Re[10]: синхронизация в MSSQL
От: alex_pit  
Дата: 16.03.05 08:52
Оценка:
Здравствуйте, Hobot Bobot!

Спасибо, попробую. А на счет тригеров вариант действительно дохлый!
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.