C # Как синхронизировать данные между экземплярами базы данных через Интернет - PullRequest
3 голосов
/ 17 ноября 2011

У нас есть приложение, которое требует от наших клиентов наличия экземпляра SQL-сервера на месте.По их запросу приложение должно синхронизировать данные в своей базе данных с копией в нашем центре данных.

Мы используем .Net 3.5 SP1.Нам нужно точно синхронизировать данные, включая столбцы IDENTITY.

Мы бы предпочли использовать что-то вроде LINQ to SQL, что позволило бы нам сделать несколько простых вызовов select и insert / update для сопоставленных объектов.Однако столбцы IDENTITY, по-видимому, являются проблемой для LINQ и аналогичных подходов.

Мы можем делать все это с помощью встроенных операторов SQL и включать / выключать IDENTITY INSERT по мере необходимости, но я бы предпочел болееэлегантное решение.

Спасибо!

** Правка - Нам действительно нужно написать собственное решение, и нам нужно использовать .Net 3.5 SP1 для этого.Я не буду тратить ваше время на объяснение всех причин, но, пожалуйста, ограничьте предложения вариантами на площадке .Net.

Ответы [ 2 ]

1 голос
/ 24 ноября 2015

Microsoft Sync Framework может быть вашим решением.Это описание инфраструктуры от Microsoft:

Microsoft Sync Framework - это платформа синхронизации данных от Microsoft, которую можно использовать для синхронизации данных между несколькими хранилищами данных.Sync Framework включает независимую от транспорта архитектуру, в которую могут быть подключены поставщики синхронизации, специфичные для хранилища данных, смоделированные по API поставщика данных ADO.NET.


Sync Framework - это комплексное решение для синхронизации данныхЭто позволяет разработчикам создавать решения, поддерживающие синхронизацию любой базы данных, по любому протоколу данных по любой топологии сети.msdn.microsoft.com

Для вашего удобства предоставьте ссылку на хороший учебник по теме

0 голосов
/ 21 ноября 2011

Если требуется синхронизировать только пару таблиц и в таблицах нет большого количества данных (в настоящее время и в будущем), вы можете разработать своего рода массовую копию со своих серверов и процедуру массовой вставки по требованию заказчика. сервер.

Поскольку вы сказали, что не можете использовать службы репликации SQL Server или службы SSIS, возможно, можно написать процедуру резервного копирования / восстановления. Вы можете сделать запланированное резервное копирование своей базы данных и сделать ее доступной для вызывающих приложений, которые затем могут скопировать резервную копию, восстановить ее в другом экземпляре на сервере клиентов, а затем извлечь все необходимые данные с помощью любого количества методов, и они будут существовать локально на серверы клиентов.

Кроме того, я думаю, что вы, возможно, попросите кошмар о техническом обслуживании и синхронизации, если вы не можете основывать свое решение на инструментах, предназначенных для подобных вещей.

...