У меня есть два SQL-сервера, которые мне нужно иметь одинаковые. Синхронизация должна происходить, может быть, пару раз в день, автоматически. У двух серверов нет «прямого» соединения между ними, поэтому никаких связанных db и т. Д. (Они находятся на полностью разных компьютерах, сетях, доменах, с брандмауэрами между ними). Вы можете использовать Интернет, хотя, например, веб-сервис, FTP. .Синхронизация данных между двумя Diff SQL-серверами
CopyFromDB содержит много таблиц, но только около 20 таблиц (только данные, без изменений схемы на данный момент) должны быть синхронизированы с CopyToDB. Только около половины таблиц будут иметь новые/обновленные строки каждый день. Остальные пару раз в год. Я предполагаю, что это всего лишь пара тысяч строк в день прямо сейчас. Это может, однако, расти в будущем, примерно до 100 000 строк в день. Так что, может быть, не слишком много данных, я думаю.
А также (пока что может измениться) данные должны быть синхронизированы в одну сторону, от CopyFromDB до CopyToDB. Было бы также неплохо, если бы он не «ломался» только потому, что кто-то добавляет дополнительный столбец в таблицу на CopyFromDB, но этот новый col не должен синхронизироваться с CopyToDB автоматически. (Только копии, которые должны синхронизироваться, находятся на CopyToDB, могут быть другие столбцы, которые не должны синхронизироваться)
Он должен вставить, обновить или вставить. В худшем случае я предполагаю, что это может привести к полному удалению и вставке, но мне это не нравится. (Есть, конечно, FK и т. Д., Поэтому данные должны быть вставлены в правильном порядке)
На данный момент существует только один «CopyToDB», но это может увеличиться. Решение также должно быть довольно простым и не слишком сложным. :-)
Мой вопрос: что было бы лучшим способом добиться этого? У меня есть несколько идей ниже.
- WS на стороне CopyToDB, вызываемой со стороны CopyFromDB службой или чем-то еще? Нажатие данных происходит только с момента последней синхронизации.
- FTP на стороне CopyToDB, которая принимает «sql-файл» с изменениями. Как Вставить/Обновить/Удалить. Это выталкивается там CopyFromDB.
- Что-то еще? Встроенный инструмент, который уже делает это? Или инструмент 3d-части? Что-то вроде Red Data SQL Data Compare, только автоматически.
Спасибо за ваши мысли и/или ответы!
Я искал форум для моего вопроса. Но я могу только найти вопросы, где у двух серверов есть какое-то «прямое» соединение между ними, или вы делаете резервное копирование/восстановление. Но если на вопрос уже был дан ответ, я прошу прощения, и не могли бы вы рассказать мне, где? :)
Ну, я не нашел никаких «коротких сокращений», поэтому я выбрал первый способ, используя WS. (Ошибка sql-file-way не удалась, возможно, он мог ее решить, но потребовалось слишком много времени) В CopyFromDB в каждой таблице есть столбец DateTime - «update». Я использую это для проверки новых данных. Новые данные затем помещаются в DTO, сериализуются, сжимаются и отправляются на WS на стороне CopyToDB. CopyToDB берет данные, если он уже существует, он выполняет обновление или же выполняет вставку. Ну, в этом есть больше логики, но в основном так оно и решается. – Rolle