Синхронизация между SQL Server 2008 Express и таблицами VFP - PullRequest
0 голосов
/ 20 мая 2009

Я ищу советы и предложения о том, как синхронизировать данные между двумя базами данных.

Первая база данных - это SQL Server 2008 Express, которая работает на отключенных ноутбуках (без доступа к сети или Интернету). Вторая база данных (основная) - это VFP 9.0, работающий на сервере.

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

Помимо различных механизмов баз данных, я должен учитывать следующие элементы:

  1. Таблицы необязательно имеют одинаковую структуру
  2. Первичные ключи не совпадают (GUID в SQL Server и часто комбинация символьных полей в VFP)
  3. Синхронизация таблиц должна выполняться в определенном порядке, чтобы уважать отношения родитель-ребенок
  4. При некоторых вставках на стороне SQL Server новый первичный ключ должен быть создан и синхронизирован в таблице VFP
  5. Должна быть сделана куча проверок, и иногда требуется некоторая обратная связь с пользователем
  6. Не все записи должны быть синхронизированы
  7. Некоторые записи на SQL Server необходимо удалить после синхронизации
  8. Необходимо учитывать удаленные записи с обеих сторон
  9. Минимальные изменения должны быть сделаны в базе данных VFP

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

Я быстро посмотрел на Microsoft Sync Framework, но, учитывая все мои ограничения и тот факт, что VFP-клиент уже не встроен (AFAIK), я не думаю, что он очень поможет.

Заранее спасибо за отзыв.

Обновление : приложение для ноутбука является приложением C # WinForm и использует SQL Server 2008 Express.

Ответы [ 2 ]

1 голос
/ 07 июня 2009

Сложность ситуации и требования приводят меня к мысли, что вам нужно написать приложение Visual FoxPro. Visual FoxPro легко подключается к данным SQL Server 2008. Сложность кода соответствует требованиям и идентифицирует данные, которые необходимо синхронизировать, а не синтаксис. Преимущество Visual FoxPro заключается в языке манипулирования данными и возможности подключения практически к любому источнику данных (собственные DBF, ODBC, ADO и XML).

SQL Server может считывать данные VFP 9 через драйвер VFP 9 OLE DB. Вы можете написать хранимые процедуры T-SQL, чтобы получить данные VFP. Не уверен, как он узнает, что ноутбук подключен к сети.

Другой подход заключается в использовании SQL Server Diffgrams. Я не являюсь экспертом в какой-то степени воображения в отношении этого подхода, но вы могли бы исследовать его.

Так как мой опыт работы с Visual FoxPro очевиден, мне было бы намного проще пойти другим путем, но это только я. Вы должны использовать набор навыков ресурсов, которые у вас есть для проекта.

VFP считывает и записывает данные SQL Server через соединение (DSN, ConnectionString) и любым методом, включающим SQL Passthrough (SQLConnect (), SQLExec () и SQLDisconnect ()), CursorAdapters, Remote Views или их комбинацию.

Программа Visual FoxPro также может распознавать события Windows, например, подключение к сети. Приложение может быть установлено на каждом ноутбуке и запущено для распознавания события Windows. После возникновения события приложение может попытаться подключиться к базе данных SQL Server (возможно, оно подключается к сети без SQL Server или к другой сети).

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

Похоже, у вас нет большого контроля над записью приложения в данные VFP 9 на ноутбуке. Если у вас есть контроль над записью приложения в базу данных VFP 9, вы можете изменить приложение для записи в экземпляр SQL Server Express на ноутбуке, а затем использовать репликацию SQL Server для управления синхронизацией. Впрочем, это не тривиальная задача, и репликация SQL Server, улучшаясь с каждым выпуском, приводит к выпадению волос у администраторов баз данных. На этом пути определенно много работы.

Рик Шуммер Visual FoxPro MVP

0 голосов
/ 17 июля 2009

Я бы посоветовал вам еще раз взглянуть на среду синхронизации MS. У нас возникает ситуация, когда мы хотим синхронизировать время от времени подключенные клиентские приложения C # с нашим бэкэндом Java / Oracle. Вы можете использовать провайдеры инфраструктуры синхронизации для клиента C # и реализовать свой собственный подкласс KnowledgeSyncProvider для серверной части. Это продвинет вас на полпути и покажет хороший шаблон для подачи заявки на отдых.

...