Практическое руководство. Настройка синхронизации данных в приложении

Обновлен: Июль 2008

Если для приложения требуются данные из удаленной базы данных, которые не должны постоянно обновляться из базы данных (или которые не всегда доступны), то можно использовать локальную базу данных для хранения данных на клиентском компьютере. Затем можно настроить приложение для синхронизации данных между локальной и удаленной базами данных, используя диалоговое окно Настроить синхронизацию данных для настройки Microsoft Synchronization Services для ADO.NET.

Начиная с версии Visual Studio 2008 SP1, дополнительно к диалоговому окну Настройка синхронизации данных для настройки синхронизации можно также использовать Мастер настройки источника данных. Во время настройки типизированного набора данных выберите параметр Включить кэширование локальной базы данных на странице Выбор объектов базы данных мастера. Дополнительные сведения см. в разделе Пошаговое руководство. Создание произвольно подключаемого приложения с помощью мастера настройки источника данных.

Примечание В проектах интеллектуальных устройств конструктор синхронизации не может быть запущен из мастера настройки источника данных.. Дополнительные сведения см. в разделе Произвольно подключаемые приложения (устройства). Дополнительно в версию Visual Studio 2008 SP1 добавлена поддержка средства отслеживания изменений SQL Server 2008. Отслеживание изменений SQL Server 2008 можно включить во время настройки синхронизации из диалогового окна Настройка синхронизации данных или в Мастере настройки источника данных. Дополнительные сведения см. в разделе Практическое руководство. Настройка синхронизации данных для использования отслеживания изменений SQL Server.

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

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

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

Bb384585.alert_note(ru-ru,VS.90).gifПримечание.

Диалоговое окно Настроить синхронизацию данных предоставляет возможность настроить Microsoft Synchronization Services для ADO.NET только для загрузки сценариев. Это означает, что после настройки синхронизации данных с помощью диалогового окна Настроить синхронизацию данных вызов Microsoft.Synchronization.Data.SyncAgent.Synchronize только обновит локальную базу данных изменениями, выполненными на удаленной базе данных. Изменения, выполненные в локальной базе данных, не будут переданы на удаленную базу данных. После настройки синхронизации данных с помощью диалогового окна Настроить синхронизацию данных можно программно включить загрузку на сервер (двунаправленную синхронизацию) во время синхронизации. Дополнительные сведения см. в разделе Практическое руководство. Настройка локальной и удаленной баз данных для двунаправленной синхронизации.

Добавление локального кэша базы данных в проект

Можно настроить приложения на локальное кэширование данных путем добавления файла SYNC в проект и настройки его с помощью диалогового окна Настроить синхронизацию данных. Можно добавить SYNC-файлы для проектов с помощью Диалоговое окно "Добавление нового элемента".

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

Bb384585.alert_note(ru-ru,VS.90).gifПримечание.

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Для настройки синхронизации данных:

  1. В меню Проект выберите команду Добавить новый элемент.

  2. Выберите шаблон Кэш локальной базы данных.

  3. Либо введите альтернативное имя, либо оставьте имя по умолчанию из LocalDataCache1.Sync.

  4. Нажмите кнопку Добавить.

    SYNC-файл добавляется в проект, и открывается диалоговое окно Настроить синхронизацию данных.

  5. Задайте Соединение с сервером к удаленной базе данных, к которой требуется подключиться.

  6. Задайте Соединение с клиентом к локальной базе данныхSQL Server Compact 3.5, которая будет хранить данные. Если у вас нет локальной базы данных, можно оставить значение Имя базы данных .sdf (новое) по умолчанию для создания новой базы данных в проекте. Имя новой базы данных будет основываться на имени базы данных в окне Подключение к серверу.

    Bb384585.alert_note(ru-ru,VS.90).gifПримечание.

    Кнопка OK отключена по умолчанию и включается после добавления таблицы на область Кэшированные таблицы.

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

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

    • Данные для загрузки:

      Новые и добавочные изменения после первой синхронизации

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

      Каждый раз всю таблицу

      Этот параметр удаляет локальную таблицу и заменяет ее версией на сервере.

    • Сравните обновления с помощью

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

    • Сравните вставки с помощью

      Установите это для имени столбца в выбранной таблице, который используется для отслеживания добавления новых записей в таблицу. По умолчанию в этом списке появится любой столбец, который определен как datetime или timestamp. Если таблица не содержит столбец, используемый для отслеживания появления новых записей, можно оставить стандартную настройку CreationDate (new), которая сама создаст столбец отслеживания.

    • Переместить удаленные элементы в

      Установите это для таблицы на сервере базы данных, которая используется для хранения удаленных записей. По умолчанию любая таблица с именем tableName_Deleted или tableName _Tombstone будет отображаться в этом списке. Если база данных не содержит таблицу для хранения удаленных элементов, можно оставить настройку по умолчанию tableName_Tombstone (новое), которая создаст таблицу для удаленных элементов.

      Bb384585.alert_note(ru-ru,VS.90).gifПримечание.

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

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

    Bb384585.alert_note(ru-ru,VS.90).gifПримечание.

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

  10. Нажмите кнопку OK.

  11. Нажмите кнопку Показать пример кода, чтобы открыть диалоговое окно Пример кода, которое покажет пример кода, запускающий процесс синхронизации. Можно скопировать этот фрагмент в буфер обмена и вставить в программу.

  12. При необходимости установите параметры Дополнительно.

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

    1. Синхронизация таблиц в одной транзакции. По умолчанию этот флажок не установлен, и все таблицы будут синхронизироваться по отдельности. Если обнаружены ошибки, только таблицы с ошибками откатят свои модификации. Если этот параметр установлен, все таблицы синхронизируются в одной транзакции. Если обнаружены ошибки, все модификации для всех таблиц откатываются.

    2. Создание компонентов синхронизации. По умолчанию компоненты синхронизации создаются и для сервера, и для клиента. Можно установить этот параметр на значение Только клиент или на значение Только сервер для соответствия требованиям приложения.

    3. Расположение сервера проекта. По умолчанию компоненты синхронизации для сервера будут созданы в текущем проекте. Установите этот параметр для создания компонентов синхронизации для сервера в любой проект вида Visual Basic или Visual C# в решении.

    4. Расположение клиента проекта. По умолчанию компоненты синхронизации для клиента будут созданы в текущем проекте. Установите этот параметр для создания компонентов синхронизации для клиента в любой проект вида Visual Basic или Visual C# в решении.

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

Bb384585.alert_note(ru-ru,VS.90).gifПримечание.

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

Чтобы начать синхронизацию:

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

    ' Call SyncAgent.Synchronize() to initiate the synchronization process.
    ' Synchronization only updates the local database, not your project's data source.
    Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()
    
    ' Add code here to refill your application's data source
    ' with the updated data from the local database.
    
    // Call SyncAgent.Synchronize() to initiate the synchronization process.
    // Synchronization only updates the local database, not your project's data source.
    LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats =
    syncAgent.Synchronize();
    
    // Add code to refill your application's data source
    // with the updated data from the local database.
    

См. также

Задачи

Пошаговое руководство. Создание произвольно подключаемого приложения

Пошаговое руководство. Развертывание произвольно подключаемых клиентских приложений с локальной базой данных

Пример периодически подключаемых данных

Пошаговое руководство. Создание произвольно подключаемого приложения для интеллектуального устройства

Основные понятия

Общие сведения о произвольно подключаемых приложениях

Произвольно подключаемые приложения (устройства)

Другие ресурсы

Произвольно подключаемые приложения

Журнал изменений

Дата

Журнал

Причина

Июль 2008

Добавлены сведения о настройке синхронизации данных с помощью Мастера настройки источника данных.

Изменение функции SP1.

Июль 2008

Добавлены примечания о синхронизации в проектах интеллектуальных устройств.

Изменение функции SP1.