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

Практические занятия для опытных пользователей. Разделение таблиц для более безопасных корректировок

Один из способов снижения числа накладывающихся корректировок — разделение таб­лицы на более мелкие фрагменты. Основная идея — взять единую таблицу с большим числом полей и разделить ее на две меньшие таблицы, каждая из которых включает только некоторое число этих полей. Например, можно взять таблицу Customers (клиенты) и разделить на таблицу CustomerAddress (адрес клиента) и таблицу CustomerFinancial (финансовая информация клиента). Каждая запись таблицы CustomerAddress связана с единственной записью таблицы CustomerFinancial с помощью от­ношения "один-к-одному". Для получения всей информации о клиенте вам понадобятся обе записи.

Лучше всего делить таблицу, когда вы выясните, что типичное редактирование включа­ет поля только из одной таблицы. Возможно, вы знаете, что отдел по обслуживанию клиентов часто обновляет адресные данные, а финансовый отдел работает с финансо­выми сведениями, в этом случае разделение таблицы — прекрасная идея. Отдел по об­служиванию клиентов будет использовать таблицу CustomerAddress почти монополь­но, а финансовый отдел будет работать с таблицей CustomerFinancial. Вероятность наложения корректировок резко снижается, поскольку обработка делится между двумя таблицами.

Применение блокировок для предотвращения наложения обновлений

Если накладывающиеся изменения вызывают слишком много проблем, у вас есть еще одна возможность. Можно применить программный трюк, именуемый блокировкой, препятст­вующей наложению корректировок.

По существу блокировка использует ту же идею, которая мешает двум людям встретить­ся в одной туалетной кабинке. Когда один человек заходит, он или она включает блокировку и все остальные вынуждены ждать, пока дело не будет сделано. Аналогичным образом, когда пользователь пытается изменить запись, программа Access начинает с установки блокиров­ки этой записи. Любой другой пользователь, желающий внести изменения, вынужден ждать, пока не завершится первая операция.

Самый легкий способ применения блокировок — включение их с помощью параметров Access. Для этого выберите кнопку Office → Параметры Access (Office Access Options), Затем перейдите к категории Дополнительно (Advanced) и найдите параметр Блокировка по умолчанию (Default record locking).

У вас есть три следующих варианта для выбора.

  • Вариант Отсутствует (No locks) — это стандартная установка в программе Access. Когда применяется этот вариант, Access вообще не будет использовать блокировки и наложе­ние корректировок становится возможным.

  • Вариант Всех записей (All records) заставляет программу Access блокировать всю таблицу целиком, если кто-либо начнет редактировать запись. Это значение применяется крайне редко, поскольку оно блокирует все записи и препятствует работе с таблицей кого бы то ни было, если вносится хотя бы одно изменение. Такое ограничение может ввести любую организацию в тяжелый ступор.

  • Вариант Изменяемой записи (Edited record) блокирует отдельные записи, когда они редактируются, что препятствует наложению корректировок.

Последний вариант — наиболее распространенный вид блокировок. Когда применяетсяблокировка отдельных записей, программа Access не разрешит начать редактирование запи­си, если в данный момент кто-то еще ее изменяет. Когда вы сделаете попытку, Access выве­дет на экран пиктограмму, обозначающую блокировку записи, показанную на рис. 18.12.

Рис. 18.12. Символ "Вход воспрещен" предупреждает о необходимости ожидания вместо редактирования записи, которая уже используется. Если вы все же попытаетесь ввести данные в поле, программа Access решительно проигнорирует вашу попытку

Блокировки мешают превращению вашей БД в груду беспорядочных сведений, но они порождают другие проблемы. Программа Access вынуждена выполнять дополнительную работу по отслеживанию каждой блокировки — она должна действовать как перегруженный работой "умывальников начальник", выдающий ключи от кабинок. Access отслеживает бло­кировки, создавая файл с расширением laccdb. Например, когда кто-то в первый раз откры­вает БД с многопользовательской поддержкой BoutiqueFudge_be.accdb, программа Access создает файл, названный BoutiqueFudge_be.laccdb. (Символ "l" обозначает "locking" (блокировка).) Когда последний пользователь закрывает БД, Access удаляет файл с блоки­ровками.

Подсказка

Если вы загляните в папку с общим доступом и не увидите там файла с расширением laccdb, знайте, что в этот момент никто не использует БД или же кто-то открыл ее с монопольным дос­тупом (Exclusive mode).

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

Примечание

Отправляясь на перерыв, вы можете свернуть работу всей компании, даже не догадываясь об этом. Еще хуже то, что хотя потенциальные редакторы будут видеть, что запись заблокирова­на, они никак не смогут установить кто — причина их бед. Им остается только ждать и ждать.

Если вы все же решили применять блокировки, гораздо лучше использовать их в от­дельных формах, а не включать во всех БД с помощью параметров программы Access. Мож­но использовать для всей БД стандартное значение для блокировки Отсутствует (No locks), но задать применение блокировок во всех формах, использующих особенно важную таблицу, скажем Invoices (счета).

Для изменения способа обработки блокировок в формах откройте Окно свойств (Property Sheet) и найдите свойство Блокировка записей (Record Locks). Оно поддержива­ет те же три значения: Отсутствует (No Locks) (значение по умолчанию), Всех записей (All Records) и Изменяемой записи (Edited Record).

Примечание

Этот прием оставляет открытой дверь черного хода. Если кто-то решит внести изменение, от­крыв непосредственно таблицу, он обойдет блокировки, которые вы установили в своих фор­мах. Как всегда, людей легко направить верным путем, но трудно удержать их на этом пути.

Открытие БД с монопольным доступом

Одно из ограничений БД с многопользовательской поддержкой — невозможность изменять структуру таблиц во время работы пользователей с БД. Прежде чем вы сможете внести ра­дикальные изменения, нужно открыть БД с монопольным доступом (Exclusive mode).

Монопольный доступ временно предоставляет БД в единоличное пользование одному человеку. Когда БД открыта с монопольным доступом, никто другой не может к ней обра­щаться, независимо от того, какую клиентскую БД они используют. У вас есть драгоценное время для выполнения радикальных изменений, которые обычно вы не можете внести.

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

1.Попросите всех пользователей закрыть БД.

Вы не сможете открыть БД с монопольным доступом, если она кем-то используется в на­стоящий момент. В большой компании это самый трудный этап. Иногда системные ад­министраторы прибегают к помощи электронной почты, чтобы дать всем знать, что при­шло время завершать работу. Другой вариант — научить пользователей, работающих с вашей БД, закрывать ее всегда на ночь, прежде чем уйти домой, что позволит вам без по­терь дремать во время обновления, проводимого в ночные часы.

  1. Выберите кнопку Office → Открыть (Office Open). На экране появится окно Открытие файла базы данных.

  2. Выберите файл БД, который хотите открыть, и щелкните кнопкой мыши направленную вниз стрелку на кнопке Открыть (Open).

На экране появится список специализированных параметров открытия вашего файла (рис. 18.13).

4. Выберите Монопольно (Open Exclusive).

Программа Access откроет БД. Теперь можно внести изменения без каких-либо ограни­чений. Но действуйте быстро — чем дольше вы держите БД открытой с монопольным доступом, тем дольше другие пользователи вынуждены ждать момента, когда они смогут приступить к своей работе.

Рис. 18.13.Если открыть БД Монопольно, никто яругой не сможет ее открыть, пока вы ее не закроете. Если открыть файл в режиме Открыть для чтения, нельзя будет внести никакие изменения

Примечание

Можно настроить программу Access так, что она всегда будет пытаться открыть любую БД мо­нопольно. Но для такого подхода редко появляются основания, поскольку он сводит на нет многопользовательскую поддержку.

Повреждение данных

Повреждение или нарушение целостности данных — термин, вселяющий страх в сердца стойких гуру Access. Будем надеяться, что пользователи вашей БД, будут вести себя

достойно, сеть в, которой она размещена, будет надежной, а вашей БД никогда не будет угро­жать опасность. Но если судьба не будет к вам столь благосклонна, важно быть готовым к ее ударам.

Повреждение данных — многосмысловой термин, описывающий, что происходит, когда повреждается часть файла БД. Представим себе Джессику Бакстер (Jessica Baxter), которая успела внести половину большого обновления, когда произошло отключение питания (или какой-то шутник в офисе выдернул ее сетевой кабель). Серверная БД останется с недосто­верными данными, поскольку была получена только часть информации Джессики. В ре­зультате запись, с которой она работала, может быть искажена до неузнаваемости. Если же вы особенно невезучи, проблема может затронуть несколько записей или заставить всю БД вести себя странным образом.

Диагностика и корректировка поврежденных БД

Все специалисты Access должны обладать базовыми навыками выживания в случае повреж­дения данных. Во-первых, вы должны уметь определять, когда БД испортилась. Далее пере­числены некоторые признаки, сигнализирующие об этом.

  • Загадочные сообщения об ошибках, которые появляются без видимой причины, например, "нехватка памяти" (out of memory). (Имейте в виду, что их не следует путать с всегда популярной категорией непонятных сообщений об ошибках, отображаемых на законных основаниях, например таких, как "файл уже используется" (file already in use).)

  • Строки, содержащие тарабарщину, вроде ### или ???. Обычно подобные значения встречаются в последних нескольких строках поврежденной БД, что свидетельствует о том, что пострадало только несколько новых вставок, а остальное содержимое, возможно, корректно.

  • Полная невозможность использования БД. Если вы получаете ужасную ошибку "Unrecognizable database format" ("Нераспознаваемый формат базы данных"), знайте - беда пришла.

Как только вы установили, что БД повреждена, самое время начинать ее лечить, чтобы вернуть ей здоровье. Первое средство — сжатие и восстановление, которые ликвидируют узел проблем и возвращают непомерно разросшимся, раздутым БД приемлемые размеры. Для опробования этого средства откройте вашу БД с монопольным доступом и выберите кнопку Office Управление Сжать и восстановить базу данных (Office Manage Compact and Repair Database). Процесс может потребовать некоторого времени, особенно в случае больших БД.

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

Примечание

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

Иногда сжатие и восстановление не решают проблему или могут лишь частично исправить файл вашей БД. В этом случае пора воспользоваться другим методом восстановления, Если оставшиеся проблемы не значительны (например, несколько строк с подозрительными данными), можно просто удалить бракованные данные и ввести их снова. Но иногда

программа Access отказывается отображать испорченные записи без многочисленных сообще­ний об ошибках. Если вы столкнулись с такой ситуацией, выберите все корректные записи и скопируйте их в другую таблицу. Затем удалите таблицу с испорченными данными и при­свойте ее имя сделанной вами копии.

Последним средством спасения может стать создание новой пустой БД и попытка им­портировать в нее таблицы серверной БД с помощью операции импорта. Это действие за­ставит программу Access создать заново каждый объект и перестроить каждый индекс. Если и это сработает не до конца, возможно, вам удастся импортировать большую часть таблиц.

И самое последнее средство — возврат к последней резервной копии БД. Вы ведь храни­те резервные копии, не правда ли?

Предупреждение повреждений

Приведенные далее рекомендации могут помочь сделать редким такое жуткое событие, как повреждение данных.

  • Придерживайтесь благоразумных установок по умолчанию, описанных в разд. "Как действует многопользовательская поддержка в Access" ранее в этой главе. Если десятки пользователей попытаются внести изменения одновременно, шансы появления проблем многократно увеличатся.

  • Всегда разделяйте БД, чтобы облегчить загрузку серверной части и держать формы и отчеты в безопасном месте.

  • Используйте надежную сеть. Если ваше сетевое соединение не заслуживает доверия, обновление может быть прервано, а это одна из главных причин нарушения целостности данных.

  • Приучите пользователей закрывать БД, когда они закончили ее использование или даже просто прервались на завтрак.

  • Регулярно применяйте средство сжатия и восстановления к вашей серверной БД (выберите из меню Office последовательность Управление Сжать и восстановить базу данных (Manage Compact and Repair Database)). Чем больше людей вносят изменения, тем сильнее разрастаются файлы БД и становятся более неорганизованными. Команда сжатия и восстановления реорганизует БД, делая ее более эффективной, более компактной и менее подверженной сбоям.

  • Делайте резервные копии как можно чаще. В зависимости от частоты внесения изменений может оказаться достаточным ежедневное резервное копирование. Но ничто не мешает вам создавать резервные копии каждый час или чаще, если это необходимо.

Подсказка

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

Защита базы данных

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

клиентских БД, по одной для каждой группы пользователей. Это позволит мягко управлять пользователями в соответствии с выполняемыми ими задачами.

Однако настройка клиентской БД не ограничит возможности упрямого злоумышленни­ка. В большой компании, рассчитывающей на многопользовательскую БД, вы думаете не о руководстве пользователями, а скорее об ограничении их возможностей.

К сожалению, у программы Access 2007 очень ограниченная модель безопасности. Вы можете защитить БД от посторонних с помощью пароля, но у вас нет более тонко настраи­ваемых средств, необходимых для запрета использования конкретных таблиц или выполне­ния определенных действий тем или иным пользователем. Как вы увидите в следующих разделах, обходные средства все-таки есть, но ни одно из них не сравнится с уровнем безо­пасности, обеспечиваемым системой управления серверной БД, такой как, например, SQL Server.

Подсказка

И снова программа Access предлагает достаточно для того, чтобы многопользовательские БД могли работать, но не более того. Вам решать, подойдет ли Access для вашей организации. Маленькие фирмы, вероятно, сочтут программу отличной, а большим организациям, возможно, понадобится серверное программное обеспечение.

Соседние файлы в папке Управление данными