Обновление сообщества синхронизации баз данных
В этом разделе описано, как обновить сообщество синхронизации с версии Sync Framework 2.0 до версии Sync Framework 2.1. В примерах в этом разделе особое внимание уделено следующим классам Sync Framework.
Основные сведения об обновлении сообщества
В версии Sync Framework 2.1 появились новые функции и изменились форматы метаданных базы данных, в результате чего база данных стала несовместима с предыдущими версиями платформы Sync Framework. Однако версия Sync Framework 2.1 может работать в режиме обратной совместимости с базами данных в формате 2.0, что дает возможность продолжить выполнение синхронизации даже в том случае, если некоторые из членов сообщества еще не обновлялись. Хотя синхронизация может быть выполнена в режиме обратной совместимости, большинство функций будут отключены до обновления базы данных до формата 2.1. Список функций, которые могут быть использованы в режиме обратной совместимости, см. в таблице раздела Функции, доступные в режиме обратной совместимости. Выполнение шагов, описанных в разделе Обновление сообщества синхронизации, позволит обновить сообщество без потери возможности синхронизации баз данных.
Основные сведения об обновлении метаданных
Основной причиной необходимости обновления сообщества является изменение формата метаданных платформы Sync Framework 2.1. Новый формат метаданных несовместим с предыдущими версиями поставщиков баз данных. Отмена обновления до нового формата метаданных невозможна, и при попытке синхронизации баз данных в формате 2.1 с помощью предыдущей версии поставщиков баз данных Sync Framework выдаст исключение. Однако класс SqlSyncProvider в Sync Framework 2.1 обнаруживает версию формата метаданных и работает в режиме обратной совместимости для синхронизации базы данных, содержащей метаданные в старом формате. Поскольку Sync Framework 2.1 может синхронизировать базу данных в старом формате с базой данных в любом из этих форматов, обновлять метаданные всех баз данных одновременно не нужно. Однако чтобы сохранить возможность синхронизации баз данных в сообществе синхронизации в условиях, когда обновлены лишь некоторые из них, необходимо выполнять обновление в правильном порядке. Это имеет особенно большое значение при использовании двухуровневой архитектуры, поскольку для предыдущих версий Sync Frameworkформат версии 2.1 недоступен для чтения. В разделе Обновление сообщества двухуровневой архитектуры описывается процедура обновления сообщества двухуровневой архитектуры. Если используется многоуровневая архитектура, то можно выполнять обновление в любом порядке, поскольку локальный поставщик-посредник будет продолжать обмен данными с компонентом службы, представляющим поставщик базы данных на сервере. Дополнительные сведения о компонентах, используемых в многоуровневой архитектуре, см. в Архитектура и классы для синхронизации базы данных.
Следует помнить, что компоненты Sync Framework 2.1 в пространстве имен Microsoft.Synchronization.Data.SqlServerCe автоматически обновляют формат метаданных базы данных SQL Server Compact. Это обновление выполняется в момент первого соединения компонента из этого пространства имен с базой данных.
Обновление сообщества синхронизации
Поскольку поставщик SqlSyncProvider имеет режим обратной совместимости, он может синхронизировать базы данных SQL Server, хранящие метаданные в старом формате. Это означает, что при необходимости можно обновить отдельные базы данных в сообществе, при этом все базы данных не обязательно обновлять одновременно. В следующих разделах описываются шаги по обновлению отдельной базы данных и процедура обновления баз данных в сообществе, в котором используется двухуровневая архитектура.
Обновление базы данных
Чтобы обновить базу данных, следуйте описанной ниже общей процедуре.
Установите версию Sync Framework 2.1. Она будет установлена параллельно с версией Sync Framework 2.0.
Перекомпилируйте приложение синхронизации и другие компоненты для использования версии Sync Framework 2.1, указав ссылки на версии сборок Sync Framework 2.1, либо воспользуйтесь для загрузки сборок Sync Framework 2.1 перенаправлением привязок. Дополнительные сведения о перенаправлении привязок см. в разделе Обратная совместимость и взаимодействие платформы Sync Framework.
На этом этапе можно продолжать синхронизировать базы данных SQL Server без обновления формата метаданных, поскольку поставщик SqlSyncProvider будет работать в режиме обратной совместимости. При синхронизации базы данных SQL Server Compact она будет автоматически обновлена до новой версии формата метаданных. Необходимо помнить, что только синхронизация поддерживает режим обратной совместимости. Большая часть других операций с метаданными или функциями, представленными в Sync Framework 2.1, приводят к появлению DbSyncException при выполнении в базе данных с метаданными версии 2.0.
Обновите формат метаданных в базе данных, вызвав метод SqlSyncStoreMetadataUpgrade..::..UpgradeSyncSchema или SqlCeSyncStoreMetadataUpgrade..::..UpgradeSyncSchema. Следующий пример показывает, как это сделать.
sqlUpgrader = new SqlSyncStoreMetadataUpgrade(serverConn, null, null); sqlUpgrader.UpgradeSyncSchema();
sqlUpgrader = New SqlSyncStoreMetadataUpgrade(serverConn, Nothing, Nothing) sqlUpgrader.UpgradeSyncSchema()
Теперь можно выполнить синхронизацию обновленной базы данных с базами данных одного из этих форматов метаданных.
Обновление сообщества двухуровневой архитектуры
При использовании двухуровневой архитектуры при работе с сообществом синхронизации, Sync Framework запускается на локальном компьютере и синхронизирует локальную базу данных с базой данных на удаленном компьютере. на котором не запущен Sync Framework. В двухуровневой архитектуре, в которой используется топология «звезда», необходимо обновить версию Sync Framework на всех компьютерах, не являющихся центральными, до обновления метаданных базы данных на центральном компьютере. Иначе при попытке синхронизации компьютера, который не является центральным и использует Sync Framework 2.0, с обновленной базой данных на центральном узле Sync Framework не сможет прочитать новый формат метаданных и при выполнении синхронизации произойдет ошибка.
Чтобы обновить сообщество двухуровневой архитектуры, в которой используется топология «звезда», используйте следующую общую процедуру:
Используйте процедуру, описанную в разделе Обновление базы данных, для обновления компьютера, не являющегося центральным, приложения синхронизации и базы данных до Sync Framework 2.1.
На этом этапе можно продолжить синхронизацию базы данных, не являющейся центральной, с базой данных центрального узла. Sync Framework работает в центральной базе данных в режиме обратной совместимости и поэтому поддерживается только синхронизация. При выполнении других операций в центральной базе данных вызывается DbSyncException.
Обновите остальные компьютеры, не являющиеся центральными.
После обновления всех компьютеров, не являющихся центральными, обновите центральную базу данных до нового формата метаданных.
Функции, доступные в режиме обратной совместимости
При работе Sync Framework в режиме обратной совместимости многие функции недоступны для использования. В следующей таблице перечислены некоторые функции Sync Framework и указывается возможность их использования в режиме обратной совместимости.
Функция Sync Framework |
Может использоваться в режиме обратной совместимости? |
---|---|
Синхронизация |
Да |
Очистка метаданных |
Да |
Пакетирование |
Да |
Обнаружение областей |
Да |
Провизионирование и отмена провизионирования |
Нет |
Создание моментальных снимков |
Нет |
Инициализация моментальных снимков из базы данных в старом формате |
Да, но метаданные автоматически обновляются до нового формата. |
Максимальный размер транзакции приложения. |
Нет |
Восстановление из резервной копии в старом формате |
Нет |
Исключения, вызываемые при несовпадении версий метаданных и компонентов
При вызове метода Sync Framework 2.1 для функции, не поддерживающей режим обратной совместимости, или при использовании компонентов Sync Framework предыдущих версий для синхронизации базы данных в новом формате вызываются исключения, указывающие на возникновение ошибки. В следующем списке исключений описываются ситуации, в которых вызываются исключения.
Вызывается DbVersionException. Это происходит при вызове метода Sync Framework 2.1 в базе данных в предыдущем формате, и метод не поддерживает обратную совместимость, например при провизионировании области путем вызова SqlSyncScopeProvisioning..::..Apply.
SqlException вызывается со следующим сообщением: «Недопустимое имя столбца "scope_name".» Это происходит при попытке объекта SqlSyncProvider из более ранней версии Sync Framework синхронизации базы данных в новом формате.
DbSyncException вызывается со следующим сообщением «Возникла ошибка при инициализации адаптеров для области "<scope name>". Убедитесь, что имя области, указанное в поставщике, существует в таблице метаданных областей и для этой области правильно указаны базовые таблицы». Это происходит при попытке объекта SqlCeSyncProvider из более ранней версии Sync Framework синхронизировать базу данных в новом формате.