Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
управление данными.doc
Скачиваний:
46
Добавлен:
11.03.2015
Размер:
1.51 Mб
Скачать

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

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

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

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

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

Таблица 9.1.

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

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

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

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

1

2

3

Update/Update

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

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

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

Update/delete

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

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

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

Окончание табл. 9.1.

1

2

3

Unique key violation

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

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

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

Validation rule

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

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

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

Referential integrity

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

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

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

Locked record

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

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

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

Видимость реплик

По уровню видимости, поддерживаемые Jet 4.0 реплики делятся на три группы: глобальные, локальные и анонимные.

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

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

Локальная реплика может синхронизироваться только со своей родительской репликой (той, что ее создала). Локальную реплику видит только ее родительская реплика. Родительская реплика может инициировать синхронизационный обмен, и конфликты в любом случае устраняются в ее пользу. Приоритет локальной реплики всегда равен нулю. На основе локальной реплики можно создать только локальную реплику.

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