Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_14.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
202.75 Кб
Скачать

Методы управления блокировками в ms Access

Microsoft Access является многопользовательской СУБД. В ней имеются определенные механизмы блокировок для поддержания одновременного совместного доступа к данным и разрешения конфликтов при изменении данных.

Чтобы установить параметры блокировки записей необходимо:

  1. Выбрать команду Office → Параметры Access. Появится диалоговое окно Параметры Access.

  2. Раскрыть вкладку Дополнительно, раздел Дополнительно.

В группе Режим открытия по умолчанию можно выбрать режим Общий доступ или режим Монопольный доступ - открытие существующей базы данных для монопольного использования одним пользователем.

В группе Блокировка по умолчанию устанавливается необходимый переключатель.

Существует возможность выбора одного из трех уровней блокировки:

  • Отсутствует.

  • Блокировка всех записей. Блокируются все записи таблицы, отображаемые в форме или таблице.

  • Блокировка изменяемой записей. Блокируется только редактируемая запись.

Если нужна блокировка на уровне записей при открытии БД, то нужно установить флажок Открытие баз данных с использованием блокировки на уровне записей. Если необходима блокировка по умолчанию на уровне страниц, то этот флажок нужно сбросить.

Период обновления (с)   Число секунд, после которых Microsoft Access автоматически обновит записи в режиме таблицы или формы, если они изменялись.

Число повторов обновления   Количество попыток, когда Microsoft Access пытается сохранить измененную запись, заблокированную другим пользователем. Возможные значения от 0 до 10. Значение по умолчанию: 2.

Установленные параметры начнут действовать, когда база данных будет открыта заново с помощью команды Файл, Открыть.

Справка Access по данному вопросу: статья «Категория «Дополнительные» («Параметры Access»)».

Имеется ещё один метод блокировки записей, который состоит в установке нужного режима работы с данными в определенной форме. Для этого нужно открыть форму в режиме конструктора и на вкладке Данные Окна свойств для свойства Блокировка записей выбрать одну из опций блокировки: отсутствует, всех записей, изменяемой записи.

Кроме того, как уже указывалось ранее, можно устанавливать режимы блокировки программно с помощью соответствующих методов объекта Recordset языка VBA.

Взаимная блокировка

Механизм блокировки может вызвать ситуацию взаимной блокировки двух транзакций. Рассмотрим пример. Пусть два пользователя хотели бы заказать два товара в соответствующей коммерческой БД товаров. Пусть пользователь А хочет вначале заказать товар 1 и затем товар 2. Пользователь В желает заказать сначала товар 2 , а потом товар 1. Пользователи обращаются одновременно. При этом пользователь А блокирует запись товара 1 , а затем ожидает освобождения записи товара2. Запись 1 блокирована. Одновременно пользователь В блокирует запись товара 2 (запись 2 блокирована) и затем ожидает освобождения записи товара 1. Происходит ситуация взаимной блокировки (deadlock). Каждый пользователь ожидает освобождения ресурса, который заблокировал второй пользователь. И это может продолжаться бесконечно долго.

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

В большинстве СУБД работают специальные алгоритмы обнаружения и предотвращения взаимных блокировок.