Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описано несколько способов работы со схемами таблиц, созданными в базах данных клиента и одноранговых базах данных.
Синхронизация клиента и сервера
Во время исходного сеанса синхронизации для клиента Sync Framework создает таблицы в клиентской базе данных. Дополнительные сведения см. в разделе Как инициализировать клиентскую базу данных и работать со схемой таблицы. После создания этих таблиц допускается внесение в схему некоторых изменений.
Службы Sync Framework не распространяют изменения схемы с сервера на клиент автоматически. Дополнительные сведения о том, как изменения схемы обрабатываются на сервере, см. в разделе Развертывание и управление версиями приложений. В клиентской базе данных поддерживаются следующие изменения схемы.
Удаление таблиц. Поведение при выполнении следующей синхронизации зависит от значения, указанного для CreationOption. Если таблица на клиенте не нужна, удалите ее из SyncTableCollection. При удалении таблицы, для которой включено отслеживание изменений, удаляется и системная таблица, в которой отслеживаются операции удаления для нее. Поэтому операции удаления со времени последней синхронизации не будут переданы на сервер.
Добавление новых столбцов.
Удаление столбцов для таблиц, включенных в синхронизацию моментальных снимков. Это изменение для других типов синхронизации не поддерживается.
Добавление, удаление и переименование индексов.
Добавление, удаление и переименование первичных ключей и других ограничений.
Изменение значений по умолчанию.
Все остальные изменения не поддерживаются и могут привести к ошибкам синхронизации.
В некоторых приложениях схемы на клиенте и сервере различаются. Ниже перечислены действия в отношении таблицы и набора данных ADO.NET, которыми службы Sync Framework пользуются для обновления таблицы на клиенте.
Если набор данных содержит Column1 и Column2, а таблица содержит Column1, Column2, и Column3, то применяются значения в Column1 и Column2, а Column3 устанавливается равным значению по умолчанию или NULL, если у столбца нет значения по умолчанию.
Если набор данных содержит Column1, Column2 и Column3, а таблица содержит Column1 и Column2, то применяются значения в Column1 и Column2, а значение Column3 пропускаются.
Если набор данных содержит Column1, Column2 и Column3, а таблица содержит Column1, Column2 и Column4, то применяются значения в Column1 и Column2, а Column3 устанавливается равным значению по умолчанию или NULL, если у столбца нет значения по умолчанию, а Column4 пропускается.
Одноранговая синхронизация
Одноранговая синхронизация не обеспечивает автоматической инициализации одноранговых баз данных и создания инфраструктуры отслеживания изменений на каждом узле. Сведения об инициализации схем и данных см. в подразделе «Инициализация базы данных сервера» раздела Как настроить и выполнить синхронизацию совместной работы (не SQL Server). Ограничений на изменения схемы базовых таблиц в одноранговых базах данных нет. Однако в случае изменения схемы приложение должно обеспечить обновление команд, проводящих выборку и применение изменений. Например, при добавлении к таблице нового столбца команду вставки изменений в эту таблицу необходимо обновить с учетом добавленного столбца.
В одноранговых сценариях схема для одноранговых баз данных может различаться. Например, в схеме таблицы на первом одноранговом узле могут использоваться числовые имена столбцов, сложные для восприятия. С помощью объектов DbSyncColumnMapping и DbSyncColumnMappingCollection можно сопоставить столбцы с более понятными именами для других одноранговых узлов.