Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
управление данными методичка.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
522.34 Кб
Скачать

Синхронизация

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

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

При использовании JRO можно выполнить однонаправленный обмен данными.

Для того чтобы инициировать синхронизацию программным путем с применением JRO нужно использовать метод Synchronize объекта Replica. Он имеет следующий синтаксис:

Replica.Synchronize путь [, тип]

Replica - это объектная переменная, указывающая на существующий объект Replica.

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

тип - константа, определяющая тип синхронизации. Возможные значения : jrSyncTypeExport (только отправить изменения), jrSyncTypeImport (только получить изменения), jrSyncTypeImpExp (отправить и получить изменения).

Устранение конфликтов

Конфликтом называется ситуация, когда в одну и ту же строку синхронизируемых реплик, вносятся противоречащие друг другу изменения. По завершении синхронизации Jet уведомляет вас обо всех обнаруженных конфликтах.

Конфликты могут устанавливаться как на уровне строк, так и на уровне столбцов.

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

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

Таблица 3.1.

Типы конфликтов

Тип конфликта

Когда происходит

Как устраняется

Update/Update

(Обновление/обновление)

Два пользователя обновили один и тот же столбец строки (при устранении конфликтов на уровне столбцов) или одну и ту же строку (при устранении конфликтов на уровне строк)

С учетом приоритета реплик

Update/delete

(Обновление/удаление)

Один пользователь обновил запись, а другой ее удалил

Выигрывает удаленная запись

Unique key violation

(Нарушение уникальности ключа)

В две или более реплик добавлены записи с одним и тем же значением первичного ключа

С учетом приоритета реплик

Validation rule

(Условие на значение)

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

С учетом приоритета реплик

Referential integrity

(Реляционная целостность)

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

С учетом приоритета реплик

Locked record

(Запись заблокирована)

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

Синхронизация не выполняется