У меня есть клиент, у которого есть несколько географически разнесенных инсталляций стороннего коммерческого продукта, который регистрирует данные в своих собственных экземплярах базы данных SQL Express (CIMPLICITY HMI от GE, если вам интересно). Теперь он хочет собрать данные журналов в центральную БД для долгосрочного хранения (т.е. локальные установки будут вести трехмесячный скользящий журнал своих данных, но центральное местоположение будет вести пятилетний скользящий журнал всех данных. И общие данные генерация, вероятно, меньше 100 МБ в месяц). Структуры таблиц будут оставаться одинаковыми как в удаленных, так и в локальных БД, так что одинаковые / похожие отчеты можно легко запускать для всех данных.
Если бы это были полные установки SQL, я считаю, что для решения проблемы я мог бы использовать репликацию публикаций. Но я имею дело с выпусками Express на удаленных концах (хотя у меня будет полная версия, с которой можно поиграть в центре).
Поэтому я ищу, как лучше всего имитировать репликацию публикаций в Express DB с помощью сторонних инструментов (без необходимости создавать собственный код). Чтобы уравновесить низкую пропускную способность данных, 3 установки фактически подключаются к дому через VPN, работающую через DSL, поэтому существует вероятность потери связи. Это не считается большой проблемой, если удаленные данные в конечном итоге регистрируются централизованно.
(Одно из возможных решений - преобразовать все экспресс-выпуски в полные выпуски, но я считаю, что это было бы недопустимо в $$, и было бы головной болью администрации при загрузке. Так что я даже не рассматриваю это в данный момент)
Спасибо за вашу помощь
Питер
Кто угодно????!?!?
Сверчки
редактировать
Я решил использовать решение с настраиваемым кодом, которое использует MSMQ для постановки в очередь на удаленной стороне. Я, вероятно, мог бы использовать SSIS для того же, но для меня это было так же легко, как и самостоятельно.
Если вы можете включить протокол TCP в SQL Express Editions и добавить учетную запись пользователя на удаленные станции, вы можете использовать Job Agent в главном окне SQL для получения всех данных. Возможно, резервное копирование и восстановление (что кажется плохой идеей с учетом ограниченной пропускной способности). Вы можете использовать триггеры на пультах дистанционного управления и отправлять обновления на главный сайт, но я не уверен, как это будет работать при VPN-подключении с потерями. Самым сложным будет, вероятно, просто заставить SQL-блоки видеть друг друга. Как только вы это сделаете, откроется множество различных вариантов.
Информация для включения TCP в SQL Express 2005: http://blogs.msdn.com/b/sqlexpress/archive/2005/05/05/415084.aspx
Мы делаем нечто подобное с HMI на некотором имеющемся у нас промышленном оборудовании, но соединения осуществляются по всей локальной сети. Наш администратор базы данных написал несколько сценариев, чтобы получить то, что нам нужно, используя команду «вставить в», и оставляет копию в основном поле SQL.