Я пытаюсь синхронизировать базу данных SQL Server CE 3.5 с базой данных SQL Server 2008 с использованием служб MS Sync. Я использую VS 2008. Я создал локальный кэш базы данных, связал его с SQL Server 2008 и выбрал таблицы, которые я хотел синхронизировать. Я выбрал отслеживание SQL Server. Он изменил базу данных для отслеживания изменений и создал локальную копию (SDF) данных.Службы синхронизации фактически не синхронизируются
Мне нужна двухсторонняя синхронизация, поэтому я создал частичный класс для агента синхронизации и добавил код в OnInitialized(), чтобы установить SyncDirection для таблиц в двунаправленный. Я прошел через отладчик, и этот код работает.
Затем я создал еще один частичный класс для поставщика синхронизации кеш-сервера и добавил обработчик событий в OnInitialized(), чтобы подключиться к событию ApplyChangeFailed. Этот код также работает нормально - мой код запускается, когда есть конфликт.
Наконец, я вручную внесли некоторые изменения в данные сервера, чтобы протестировать синхронизацию. Я использую этот код, чтобы выстрелить синхронизации:
var agent = new FSEMobileCacheSyncAgent();
var syncStats = agent.Synchronize();
syncStats кажется, чтобы показать подсчет # изменений, которые я сделал на сервере и показывает, что они были применены. Однако, когда я открываю локальный файл SDF, никаких изменений нет.
Я в основном следовали инструкциям, которые я нашел здесь:
http://msdn.microsoft.com/en-us/library/cc761546%28SQL.105%29.aspx
и здесь:
Похоже, что это должно "просто работать" на данный момент, но изменения сделанные на сервере, не находятся в локальном SDF-файле. Наверное, мне что-то не хватает, но я просто не вижу его прямо сейчас.
Я думал, это может быть из-за того, что я использовал версию 1 службы синхронизации, поэтому я удалил ссылки на Microsoft.Synchronization. * Сборки, установил среду Sync 2.0 и добавил новую версию сборок в проект. Это не имело никакого значения.
Идеи?
Edit: Я хотел включить трассировку, чтобы увидеть, если я мог отслеживать это вниз, но единственный способ сделать это через приложение WinForms, так как он требует записи в файле app.config (мой первоначальный проект был класс библиотека). Я создал проект WinForms и воссоздал все, и вдруг все работает. По-видимому, для этого почему-то нужен проект WinForm?
На самом деле это не так, как я планировал использовать это - я надеялся начать синхронизацию с помощью другого приложения, отличного от .NET, и предоставить ему интерфейс, чтобы опыт был немного более безвкусным для конечного пользователя. Если я не могу этого сделать, все в порядке, но мне бы очень хотелось узнать, как и как сделать эту работу как проект библиотеки классов.
ли вы получить эту работу? – JohnnyJP
Я заметил, что вы уже пробовали файл трассировки и теперь получили его работу с использованием проекта WinForm. Я согласен, что я не понимаю, почему это не работает с консольным приложением. – JohnnyJP