Диго С.М. Базы данных проектирование и использование (1084447), страница 65
Текст из файла (страница 65)
REVOKE SELECT ON Sotrudnik TO Ivanov;
В конкретных СУБД могут поддерживаться привилегии, отличающиеся от привилегий, приведенных выше. Так, в некоторых СУБД имеется возможность задавать привилегию INDEX, которая позволяет пользователям создавать индексы. Но объект INDEX в стандарте SQL не определен, и синтаксис команды задания этой привилегии может отличаться от системы к системе.
Стандартом SQL не определено, кто имеет право отменять привилегии. Однако обычно действует подход, при котором привилегии отменяются тем пользователем, который их предоставил, и отмена будет «каскадироваться», т.е. она будет автоматически распространяться на всех пользователей, получивших эту привилегию от пользователя, для которого привилегия отменена.
10.7. Работа в распределенной среде при использовании СУБД Access
10.7.1. Способы совместного использования данных в Access
Access, как известно, относится к классу настольных СУБД. Естественно, что сетевые возможности наиболее развиты в корпоративных СУБД, но в связи с повсеместной распространенностью сетевых технологий настольные СУБД также обеспечивают работу в многопользовательском режиме.
Access, как и большинство других СУБД, тоже обеспечивает возможность многопользовательской работы с базой данных. Допускается до 255 одновременно работающих с базой данных пользователей.
Кроме самостоятельного использования Access может применяться как средство проектирования при создании РБнД, а также в качестве интерфейсного средства при работе в гетерогенном РБнД; как правило, Access используется совместно с MS SQL-сервером.
Как указывалось выше, в Access используется своеобразное понятие базы данных: базы данных включают в своем составе не только таблицы и связи между ними (что традиционно считается базой данных), но и запросы, отчеты, модули, макросы и другие объекты. В связи с этим при работе в многопользовательском режиме возникают дополнительные проблемы и имеются специальные средства для их разрешения.
Существует несколько способов совместного использования данных в многопользовательской среде.
-
Совместное использование всей базы данных Microsoft Access.
-
Совместное использование таблиц базы данных Microsoft Access.
-
Совместное использование объектов базы данных Microsoft Access или страниц доступа к данным в Интернете.
-
Репликация базы данных Microsoft Access.
-
Создание приложения в архитектуре «клиент-сервер».
Различие в первых двух возможностях обусловлено особенностями архитектуры Access и является специфичным именно для этой СУБД. Напомним, что в Access база данных - это не только таблицы с данными, но и формы, отчеты, запросы, макросы и модули.
Можно поместить всю базу данных Access (т.е. базу данных, содержащую все эти объекты) на сетевой сервер или в общую папку. Далее следует убедиться, что для базы данных задано открытие в режиме совместного доступа. Этот режим используется по умолчанию. Чтобы установить этот режим, необходимо в меню Сервис выбрать команду Параметры, затем на вкладке Другие в группе параметров Режим открытия по умолчанию выбрать параметр общий доступ (рис. 10.8).
Путем соответствующей настройки можно также определить параметры, управляющие блокировкой данных и обновлением данных в общей базе данных, такие, как «блокировка по умолчанию» (определяет блокируемую информационную единицу), «число повторов обновления» (определяет число попыток обновления записи, если она оказалась заблокированной) и некоторые другие.
Совместное использование всей базы данных является наиболее простым способом организации совместного доступа. Все работают с одними и теми же данными, формами, отчетами, запросами, макросами и модулями. Это приемлемо, когда информационные потребности всех пользователей совпадают.
Существует и другой путь - разделение базы данных Microsoft Access на две части: собственно данные и остальные объекты базы данных Microsoft Access. В этом случае можно поместить на сетевой сервер только таблицы базы данных, а остальные объекты хранить на компьютерах пользователей. При этом работа с базой данных Access происходит быстрее, так как по сети передаются только данные. Если разделить базу данных на серверную часть (таблицы) и клиентскую часть, пользователь получит возможность изменять формы, отчеты и другие объекты в собственной клиентской базе данных, не влияя при этом на других пользователей.
Для того чтобы выполнить разделение баз данных, необходимо выполнить следующие шаги:
-
в меню Сервис выбрать команду Служебные программы и подкоманду Разделение баз данных;
-
в ответ на вопрос Мастера «Разделить базу данных» указать место на диске, где будет размещена отделенная БД, т.е. часть исходной базы данных, которая содержит таблицы.
При формировании запросов таблицы, к которым они относятся, могут находиться в другой БД. При этом используется так называемое присоединение таблиц. Администратор сети может создать несколько копий стандартной БД с присоединенными таблицами или позволить пользователю создавать собственные БД и присоединять таблицы самостоятельно. Пользователи могут корректировать данные в присоединенной таблице, но не могут менять ее структуру.
Преимущества использования присоединения:
-
доступ к БД осуществляется быстрее, поскольку отсутствуют траты времени на передачу объектов по сети;
-
резервирование данных и обновление других объектов упрощается, если таблицы хранятся отдельно от остальных объектов БД;
-
пользователь может менять свои формы и отчеты, не оказывая влияние на компоненты, разработанные другими пользователями.
Присоединенные таблицы могут находиться не только в другой БД Access, но даже в БД других СУБД.
Распределенные базы данных могут быть расположены как в локальной, так и в глобальной сети. Обеспечить совместное использование данных из БД при работе в Интернете можно несколькими способами. Имеется возможность вывести один (или несколько) объект базы данных в формате статического HTML или генерируемого сервером HTML, а также создать страницы доступа к данным, а затем отображать их в обозревателе, например в Microsoft Internet Explorer, в Интернете.
Существуют различные способы выполнения репликации и синхронизации баз данных в Access:
портфельная репликация;
-
команды репликации в меню Сервис Microsoft Access;
-
репликация в проекте Microsoft Access;
-
программная репликация;
-
диспетчер репликации Microsoft.
При использовании нескольких компьютеров, например стоящего в офисе и переносного, имеется возможность создавать с помощью портфеля Microsoft Windows реплики базы данных Microsoft Access и поддерживать синхронизацию этих реплик. При этом находящиеся в разных местах пользователи могут одновременно работать каждый со своей копией, а затем синхронизировать их через подключение удаленного доступа или через Интернет.
При работе в среде «клиент-сервер» можно использовать имеющиеся дополнительные возможности и способы защиты, обеспечиваемые сервером. Данные сохраняются в таблицах на сервере базы данных, например на Microsoft SQL Server, а не в локальных таблицах в Microsoft Access. Приложение Access (клиент) принимает требующиеся ему данные с сервера. Сервер поддерживает целостность данных и выполняет любые запросы, которые он может распознать.
При открытии файла базы данных Access (.mdb) в режиме общего доступа Microsoft Access создает файл сведений о блокировке (.ldb) с тем же именем (например, Учебная.ldb) и в той же папке, что и файл базы данных. В файле сведений о блокировке сохраняются имя компьютера и имена всех совместно работающих пользователей базы данных в системе защиты. Microsoft Access использует эти сведения для управления совместной работой. В большинстве случаев Microsoft Access автоматически удаляет файл сведений о блокировке при закрытии файла базы данных последним пользователем.
В многопользовательской среде с одними и теми же записями могут одновременно работать несколько человек. Поскольку в то время, когда один пользователь пытается редактировать записи, другие пользователи также могут вносить в них изменения или даже удалять данные, при работе иногда возникают противоречия.
Microsoft Access позволяет отслеживать состояние записей во время внесения в них изменений и обеспечить использование самых свежих данных. Если два (или более) пользователя пытаются внести изменения в одну и ту же запись, на экране появляется сообщение, помогающее разрешить конфликт. Например, при попытке сохранить запись, заблокированную другим пользователем, на экране появляется имя заблокировавшего ее пользователя.
Чтобы облегчить отслеживание состояния записей, Microsoft Access отображает специальные маркеры в области выделения текущей записи, которые позволяют понять, в каком состоянии находится запись.
Одной из возможностей поддержки удаленных пользователей с помощью реплицирования в СУБД Access является использование команды Репликация в меню Сервис Microsoft Access. Для этого в меню Сервис следует выбрать позицию Репликация, а затем - Создать реплику (рис. 10.9). Реплицировать можно только закрытую базу данных. При этом она не должна быть защищена паролем.
Реплицирование может применяться не только при работе нескольких пользователей в сети, но и, например, при использовании как настольного, так и переносного компьютера. При этом на переносном компьютере создается «оторванная» реплика, с которой можно работать автономно. Впоследствии, когда появится возможность, в случае необходимости (если в реплику вносились изменения, которые должны быть учтены в основной базе данных) можно произвести синхронизацию.
Поскольку исходная БД при репликации изменяется, то Перед созданием реплики следует создать резервную копию исходной базы данных.
Реплицирование может использоваться не только при работе нескольких пользователей в сети, но и, например, при использовании как настольного, так и переносного компьютера.
В Microsoft Access 2000 и более поздних версиях реплике в наборе реплик при ее создании назначается приоритет, и в случае конфликта синхронизации применяется реплика с наивысшим приоритетом. При равенстве приоритетов используется реплика с минимальным значением свойства «ReplicalD».
10.7.2. Виды блокировок
Блокировкой называется запрещение некоторых операций над данными (чаще - корректировки информации), если их обрабатывает (корректирует) другой пользователь.
В Microsoft Access возможно выбрать одно из трех возможных значений параметра блокировки.
-
«Отсутствует ». При выборе этого параметра изменяемая запись не блокируется. При попытке сохранить измененную запись, которую в это же время изменял другой пользователь, на экране появляется сообщение, предлагающее следующие возможности: сохранить данный вариант записи, уничтожив изменения, внесенные другим пользователем; скопировать свою измененную запись в буфер обмена; отказаться от собственных изменений. Этот параметр позволяет изменять записи в любое время, но при внесении изменений разными пользователями могут возникать конфликты. Если вероятность возникновения конфликтов велика, а квалификация и ответственность пользователей - недостаточно высокая, то использование такого значения параметра блокировки опасно и может привести к нарушению целостности данных.
-
«Изменяемой записи ». Microsoft Access блокирует изменяемую в данный момент запись, не позволяя изменять ее другим пользователям. При этом заблокированными могут оказаться другие записи, расположенные рядом на диске. Выбор данного значения параметра блокировки гарантирует завершение всех начатых изменений.
-
«Всех записей ». Microsoft Access блокирует все записи формы или объекта в режиме таблицы (и базовых таблиц) на весь период их открытия, поэтому другие пользователи не могут изменить или заблокировать записи. Этот параметр накладывает слишком жесткие ограничения. Его следует использовать в случае выполнения массовой корректировки БД либо при выполнении какой-либо приоритетной задачи, предъявляющей жесткие требования ко времени ее выполнения.
При изменении данных из связанной таблицы базы данных SQL, поддерживающей протокол ODBC (Open DataBase Connectivity - стандарт интероперабельной работы с данными), Microsoft Access не блокирует записи. Вместо этого действуют правила блокировки этой базы данных SQL. В этом случае, независимо от выбранного параметра блокировки для конкретной базы данных, Microsoft Access ведет себя так, как будто выбрано значение «Отсутствует».
Кроме того, в Microsoft Access возможна временная ручная блокировка поля. Чтобы заблокировать поле, запретив изменение текущего значения поля, необходимо выделить это поле и нажать клавиши [Ctrl]+[F11]. Чтобы снять блокировку и разрешить обновление значения поля, следует выделить поле и нажать клавиши [Ctrl]+[Shift]+[F11].
10.7.3. Проекты Microsoft Access
Проект Microsoft Access является файлом данных Microsoft Access, имеющим расширение (.adp). Проект Microsoft Access обеспечивает эффективный доступ к базам данных Microsoft SQL Server с помощью архитектуры компонентов OLE DB. Используя проект Microsoft Access, можно легко создавать приложения в архитектуре «клиент-сервер». Такое приложение в архитектуре «клиент-сервер» может быть традиционным решением, основанным на формах и отчетах, или решением на базе Интернета, использующим страницы доступа к данным, либо сочетать в себе весь спектр возможностей. Проект Microsoft Access можно подключить к удаленной базе данных Microsoft SQL Server, локальной базе данных Microsoft SQL Server или к локальной установке Microsoft SQL Server 2000 Desktop Engine (MSDE).
Проект Microsoft Access содержит только программные или HTML-объекты базы данных: формы, отчеты, имена и местоположение страниц доступа к данным, макросы и модули. В отличие от базы данных Microsoft Access, проект Microsoft Access не содержит объекты, основанные на данных или на определениях данных. Такие объекты, как таблицы, представления, схемы базы данных, сохраненные процедуры или определяемые пользователем функции, хранятся в базе данных Microsoft SQL Server.
Для создания приложения и доступа к данным проект Microsoft Access следует подключить к базе данных Microsoft SQL Server. Для подключения необходимо в меню Файл выбрать команду Подключение, открывающую диалоговое окно Свойства связи с данными, или использовать Мастер баз данных.