Access многопользовательский доступ
Совместное использование баз данных Access
Лекция 14
Базы данных Microsoft Access могут использоваться одновременно несколькими пользователями в сети. Предоставить общий доступ к базе данных можно несколькими способами:
- поместив всю базу данных в общую папку в сети;
- поместив в общей папке сети только таблицы базы данных;
- обеспечив подключение к базе данных через Интернет;
- с помощью репликации;
- с помощью СУБД SQL Server.
Публикация в сети всей базы данных
Чтобы предоставить совместный доступ к базе данных Access, ее можно поместить на файловый сервер или в общую папку на рабочей станции. Это самый простой метод обеспечения совместного доступа к базе данных и всем ее объектам: формам, отчетам, запросам, макросам и модулям. Он подходит, если нужно, чтобы все пользователи могли использовать одни и те же объекты базы данных одинаковым способом.
Поместив базу данных в общую папку на файловом сервере или рабочей станции, надо установить параметр, определяющий открытие базы данных по умолчанию в режиме совместного доступа. (см далее).
Публикация в сети таблиц базы данных
Можно предоставить совместный доступ в сети лишь к таблицам в базе данных Access. Для этого необходимо разделить базу данных на файл объектов данных (в нем хранятся таблицы) и файл объектов приложения (в нем хранятся все остальные объекты — формы, запросы, отчеты, страницы доступа к данным, макросы и модули VBA). При этом в файле объектов приложения устанавливаются связи с таблицами, хранящимися в файле объектов данных.
После разделения базы данных файл объектов данных помещается на файловый сервер или в общую папку на рабочей станции, чтобы предоставить общий доступ к таблицам, а файл объектов приложений — на компьютер пользователя в виде локальной копии.
В этом случае производительность базы данных будет несколько выше, чем при совместном доступе ко всей базе данных, поскольку по сети будут передаваться только данные из таблиц. При этом отдельный пользователь может настроить формы, отчеты и прочие объекты из файла объектов приложения в соответствии со своими индивидуальными потребностями. Эти изменения не отразятся на остальных пользователях, которые используют свои локальные копии файла объектов приложения.
Публикация базы данных в Интернете
Объекты базы данных можно предоставить в совместное использование через Интернет, создав на их основе страницы HTML , которые можно отобразить в программе просмотра Интернета, такой как Internet Explorer (см. другую лекцию).
Совместная работа с базой данных с помощью репликации
Портфельная репликация Windows позволяет использовать для работы с файлом (в том числе с базой данных) два компьютера: например, компьютер в офисе и переносной компьютер. Можно создавать реплики (специальные копии) базы данных Access для хранения на разных компьютерах и синхронизировать изменения в них. Аналогично несколько пользователей могут работать со своими копиями — репликами базы данных, которые могут быть синхронизированы по сети, с помощью удаленного доступа к сети или через Интернет.
Совместный доступ к базе данных с помощью SQL Server
Если в сети организации установлена СУБД SQL Server, ее можно использовать для совместной работы с базой данных Access. Для этого необходимо создать новое клиент-серверное приложение (на основе базы данных Access).
Иными словами, можно выполнить преобразование приложений Access с целью переноса их в другую среду эксплуатации (на платформу SQL Server).
Для обозначения таких преобразований часто используется термин “миграция”.
Под миграцией приложений понимается целевое преобразование приложения с изменением его внутренней структуры и сохранением внешнего интерфейса.
Таким образом, к миграции относится и преобразование приложения, созданного в среде Access 2002, в двухуровневое клиент-серверное приложение, в котором обработка данных выполняется сервером базы данных (то есть SQL Server).
При переносе базы данных Access в SQL Server, кроме таблиц, переносятся индексы и связи между таблицами. При этом индексы отображаются в соответствующие объекты SQL Server (индексы, использующиеся в Access и SQL Server, очень похожи, отличие состоит только в том, что SQL Server не поддерживает индексы по убыванию).
Замечание: из всего сказанного видно, что перенос приложения Access на платформу SQL Server означает его фактическую переделку в новое приложение. Остается только внешний вид старого приложения Access (интерфейс). При этом новое приложение начинает функционировать под мощными средствами SQL Server, которые и предоставляют все необходимые возможности для совместного доступа.
Режимы работы с базой данных в сети
База данных может быть открыта пользователем в сети в одном из четырех режимов.
Открытие в режиме общего доступа. База данных открывается для чтения и записи. Другие пользователи тоже могут открыть базу данных (в любом режиме).
Открытие в режиме монопольного доступа. База данных открывается для чтения и записи. Другие пользователи не смогут открыть базу данных, пока она не будет закрыта пользователем, открывшим ее в режиме монопольного доступа.
Открытие в режиме общего доступа только для чтения. База данных открывается только для чтения. Другие пользователи тоже могут открыть базу данных (в любом режиме).
Открытие в режиме монопольного доступа только для чтения. База данных открывается только для чтения. Другие пользователи не смогут открыть базу данных, пока она не будет закрыта пользователем, открывшим ее в режиме монопольного доступа.
Пользователь может открыть базу данных в любом из указанных режимов, указав его следующим способом: выбрать команду Файл/ Открыть; в появившемся диалоговом окне “Открытие файла базы данных” раскрыть список всех возможных режимов открытия базы данных (рис. 28.1).
Рис. 28.1. Список режимов открытия базы данных
Если база данных (файл с расширением mdb) открывается в режиме общего доступа, Microsoft Access создает файл блокировок с таким же именем, как база данных, но с расширением Idb, который располагается в той же папке, где хранится файл базы данных.
В файле блокировок сохраняется имя компьютера (например, MYCOMP) и регистрационное имя пользователя базы данных (например, Admin) для каждого пользователя, открывшего базу данных для совместного использования. Файл блокировок используется Microsoft Access во время совместной работы пользователей с файлом базы данных. Этот файл автоматически удаляется после того, как последний пользователь закроет базу данных.
Методы управления блокировками записей
Пока один пользователь редактирует запись, Access позволяет автоматически запретить другим пользователям изменять ее до тех пор, пока первый пользователь не закончит ее правку. Предоставление одному пользователю исключительного права доступа к записи называется блокировкой.
Существует три параметра блокировки (три метода блокировки) записей в базе данных Access.
Отсутствует (No Locks). Изменяемая запись не блокируется. При попытке сохранить измененную запись, которую в это же время изменил другой пользователь, на экране появляется сообщение, предлагающее следующие возможности: сохранить данный вариант записи, уничтожив изменения, внесенные другим пользователем; скопировать свою, измененную запись в буфер обмена; отказаться от собственных изменений. Этот параметр позволяет изменять записи в любое время, но при внесении изменений разными пользователями могут возникать конфликты.
Изменяемой записи (Edited Records). Microsoft Access блокирует изменяемую в данный момент запись, не позволяя изменять ее другим пользователям. Заблокированными могут оказаться также записи, расположенные рядом на диске. Если другой пользователь попытается изменить заблокированную запись, в его объекте в режиме Таблицы появится маркер заблокированной записи (перечеркнутый круг). Данный параметр гарантирует завершение всех начатых изменений. Это хороший выбор, если конфликты совместного доступа к записи с другими пользователями возникают редко.
Всех записей (All Records). Microsoft Access блокирует все записи формы или объекта в режиме Таблицы (и базовых таблиц) на весь период их открытия, поэтому другие пользователи не могут изменить или заблокировать записи. Этот параметр накладывает слишком жесткие ограничения. Его следует использовать только в тех случаях, когда есть уверенность, что конкретно вы имеете приоритетное право на изменение записей(то есть право, заданное администратором).
Чтобы установить параметр блокировки записей в сети (то есть выбрать метод блокировки) надо выбрать команду Сервис/Параметры; в появившемся диалоговом окне “Параметры” установить необходимый переключатель (рис. 28.2).
Рис. 28.2. Диалоговое окно Параметры
Кроме возможности выбора метода блокировки Access предоставляет возможность выбора одного из двух уровней блокировки:
Блокировка записей. Блокируется только редактируемая запись.
Блокировка страниц. Блокируется страница памяти на диске, которая может содержать несколько соседних записей (4 Кбайт памяти на страницу).
Чтобы задать уровень блокировки надо установить флажок “Блокировка записей при открытии БД” (рис. 28.2) диалогового окна “Параметры”, если нужна блокировка на уровне записей, или сбросить этот флажок, если нужна блокировка на уровне страниц.
Предотвращение конфликтов при блокировке записей в сети
Следующие четыре параметра помогают избежать конфликтов при блокировке записей в сети ( рис. 28.2):
Период обновления (Refresh interval). Этот параметр задает число секунд, по истечении которых Microsoft Access автоматически обновляет записи в объекте в режиме Таблицы или в режиме Формы. При обновлении текущего объекта в режимах Таблицы или Формы отображаются изменения в существующих записях, причем записи не сортируются заново, не добавляются новые и не убираются с экрана удаленные записи. Для того чтобы увидеть эти изменения, необходимо выполнить операцию обновления данных, например, с помощью комбинации клавиш +.
Период повтора обновления (Update retry interval). Этот параметр задает число миллисекунд, по истечении которых Microsoft Access автоматически пытается сохранить измененную запись, заблокированную другим пользователем.
Число повторов обновления (Number of update retries). Этот параметр задает число попыток сохранения измененной записи, заблокированной другим пользователем.
Период обновления ODBC (ODBC refresh interval). Этот параметр задает интервал времени в секундах, после которого Microsoft Access автоматически обновляет записи, доступ к которым осуществляется по протоколу ODBC. Для того чтобы увидеть эти изменения, необходимо выполнить операцию обновления данных, например, с помощью комбинации клавиш +.
Особенности совместного изменения объектов
Внесение изменений в объекты базы данных при работе в сети характеризуется следующими особенностями.
Хотя допускается изменение базы данных во время работы с ней других пользователей, лучше создать макеты большинства объектов до того, как другие пользователи получат возможность открыть базу данных в сети. Для того чтобы при внесении серьезных изменений в структуру базы данных запретить другим пользователям доступ к этой базе данных, следует при открытии базы данных выбрать режим Монопольно (Open Exclusive).
Если же вы открыли базу данных в режиме общего доступа и начинаете изменять структуру данных, то при условии, что в этот момент вы — единственный пользователь этой базы данных, Access 2002 автоматически временно переведет вашу базу данных в монопольный режим. Так что другие пользователи не смогут открыть эту базу данных, пока вы не закончите работу с изменениями структуры объектов. После этого база данных автоматически возвращается в режим общего доступа. Но если в такой момент вы — не единственный пользователь базы данных, то Access разрешит внести лишь незначительные изменения в дизайн объектов, например настройки печати.
Если другой пользователь открыл таблицу или просматривает данные в запросах, формах или отчетах, для которых эта таблица является источником данных, изменять структуру этой таблицы нельзя. Появляется сообщение, что таблица доступна только для чтения.
Если объекты зависят друг от друга, обновляйте их все одновременно, чтобы другие пользователи не начали работать с несогласованными версиями объектов.
Если вы внесли изменения в запрос, форму или отчет, открытый другими пользователями, им придется закрыть и снова открыть измененный объект, чтобы получить его обновленную версию.
Access. Особенности работы в многопользовательском режиме.
После создания приложения Access оно покидает среду разработки и направляется для использования заказчиками. При этом могут возникнуть проблемы, связанные с работой этого приложения в многопользовательской среде. Наиболее серьезной из этих проблем является разрешение конфликтов, возникающих при одновременном обращении нескольких пользователей к записям базы данных Access.
Важно помнить, что работа с базой данных в многопользовательской среде может вызывать проблемы, связанные с блокировкой данных и конфликтами доступа к ним. Подавление сообщений об ошибках, недостаточное внимание к подобным вопросам либо надежда на благоприятное стечение обстоятельств не решает проблему. Несмотря на кажущуюся сложность работы в многопользовательской среде, понять механизм действия блокировки данных и способ обслуживания механизмом Jet нескольких пользователей достаточно просто. Пренебрежение подобными вопросами, как правило, приводит к возникновению более сложных проблем, затрагивающих пользователей, клиентов и влияющих на репутацию разработчика. Если для приложения не предусмотрено эффективное решение вопросов работы в многопользовательской среде, при работе с ним неизбежно будут возникать следующие проблемы:
• Новые записи не сохраняются. После ввода информации пользователь обнаруживает, что в базе данных она не появилась. Если подобная ошибка не повторяется, это говорит не об отсутствии проблемы, а о ненадежности приложения.
• Изменения существующих записей не сохраняются. Пользователь может даже не заметить, что внесенные им изменения не сохранились. Однако в дальнейшем может оказаться, что либо таблица итоговых данных отсутствует, либо в инвентарном списке слишком много элементов, или может случиться так, что заказ важного клиента будет отправлен по неверному адресу. Подобные серьезные проблемы вполне могут оказаться не выявленными вовремя. Как правило, от них страдают посторонние люди.
• Пользователи получают невразумительные сообщения о невозможности обеспечить доступ к данным. Хотя последствия подобного рода неприятностей не столь драматичны, как в предыдущих случаях, для пользователя будет сильным разочарованием необходимость работы с приложением, которое не может справиться даже с такой несложной проблемой.
Проблемы работы приложений Access в многопользовательской среде связаны не только с установкой и снятием блокировок записей. Поскольку такое приложение существует в виде единого файла и, по крайней мере, часть его форм может быть непосредственно связана с данными, любой обзор проблем применения в многопользовательском режиме должен охватывать вопросы работы на уровне файла, аспекты конфигурирования, а также технологий разработки интерфейсов и свойств запросов и форм. Типичное приложение Access требует определенного сочетания различных приемов работы в распределенном режиме, поскольку в разных частях приложения подобные проблемы решаются различными способами.
Для обслуживания нескольких пользователей приложение Access необходимо на файловом уровне конфигурировать по-разному. Каждый способ имеет свои преимущества и недостатки, некоторые из них перечисляются ниже.
• Сетевое размещение. В данной конфигурации единый MDB-файл располагается на сетевом сервере, и пользователи получают доступ к базе данных при обращении к серверу. Данные и выполняемые модули могут содержаться в едином MDB-файле либо размещаться на файловом сервере в виде нескольких отдельных файлов. Преимуществом данной конфигурации является простота поддержки, поскольку при необходимости в обновлении нуждается лишь выполняемый файл. Однако, поскольку все формы, отчеты, модули, запросы, ЕХЕ-файлы Access, а также все библиотеки DLL и т.п. должны передаваться по сети на рабочую станцию, сетевой трафик неоправданно возрастает, а производительность значительно снижается. Вероятно, в подобных конфигурациях следует использовать связанные формы. Далее рассматриваются проблемы связывания форм с данными и возникающие при этом конфликты доступа.
• Разделенная база данных с размещенными в сети данными. Такая конфигурация по традиции называется конфигурацией удаленной базы данных (отметим, что значение слова «удаленная» в чрезвычайно динамичную эпоху Internet постепенно меняется и вскоре может устареть), поскольку данные отделены от выполняемого модуля или программного кода, хотя механизм баз данных и остается локальным. В отличие от конфигурации клиент-сервер, механизм баз данных Access на пользовательском ПК получает, обрабатывает, блокирует и снимает блокировку с данных, находящихся в MDB-файле на сетевом сервере. Работа в такой конфигурации зависит от механизмов баз данных одновременно работающих пользователей, а также от возможностей файлового сервера, касающихся поддержания сетевого графика. До настоящего времени при размещении приложений баз данных Access предпочтение отдают именно этому методу. Его преимуществом является высокая производительность и управляемость при корректном использовании. Поскольку при размещении данных в сети по каналам связи передаются только они, сетевой трафик значительно снижается. Основной недостаток данной конфигурации заключается в том, что на каждом клиентском ПК необходимо устанавливать Access и выполняемый MDE- (скомпилированный вариант базы данных MDB) либо MDB-файл, что осложняет поддержку приложения. Тем не менее, существуют способы решения подобной проблемы.
• Репликация. При использовании схемы репликации пользователи совместно обрабатывают данные, хотя данные на самом деле не являются общими, как это имеет место в схемах сетевого распределения или в разделенных базах данных. В схеме репликации каждый пользователь или небольшая группа пользователей имеет собственную копию данных, которые посредством механизма репликации Jet синхронизируются с другой базой или базами данных. Одно из преимуществ такой схемы, когда каждому пользователю предоставляется копия данных, состоит в полном исключении проблемы блокировки, но вместо них возникают проблемы репликации, степень сложности которых является практически такой же. Другим значительным преимуществом репликации является возможность асинхронного доступа к данным для отключенных от сети пользователей. Вместе с тем существует еще один недостаток такой схемы: при совместном использовании источника данных даже небольшой группой пользователей все же существует возможность возникновения как конфликтов доступа, так и проблем репликации.
• Конфигурация клиент-сервер. В Access 2000 появилась новая возможность создания клиент-серверных приложений на базе проекта Microsoft Access. В такой конфигурации удаленными являются как данные, так и механизм баз данных. Если данными управляет SQL Server, Oracle или какой-либо иной сервер баз данных, расположенный на центральном компьютере, он также решает вопросы блокировки и проблемы работы в многопользовательской среде. Это не означает, что разработчик избавлен от необходимости решения всех связанных с ними задач, просто ему приходится иметь дело с иными наборами свойств, возможностей и правил. Основными преимуществами такой конфигурации являются высокая производительность, стабильность, возможность обслуживания большого количества пользователей и выполнения множества задач. Наибольший недостаток данной конфигурации состоит в высокой стоимости и значительной сложности.
В данной главе рассматриваются вопросы, которые являются общими для сетевых конфигураций: схемы разделенной базы данных и реализации архитектуры клиент-сервер. О репликации рассказывается в главе 22.
При использовании Access существует ряд установок на уровне базы данных (для форм, запросов, наборов записей) и на уровне выполняемого кода, которые требуют взаимного координирования в целях обеспечения надежного обслуживания приложением нескольких пользователей. В различных частях приложения представлены почти все обсуждаемые в главе темы. Как для разных приложений, так и в пределах одной программы возможно применение разных технологий, а также их комбинаций. Основой организации работы в многопользовательской среде является планирование, прогнозирование и тестирование.
Access и способы блокировки в Jet
Механизм Jet имеет схему блокировки, которая позволяет эффективно обслуживать несколько пользователей. При использовании Jet с Access, а не с VB или каким-либо иным инструментом разработки необходимо учитывать, что некоторые действия выполняются по умолчанию. Данный раздел посвящен изучению этих вопросов.
Основные сведения о блокировке
Перед использованием приложения многопользовательской базы данных его следует разместить таким образом, чтобы пользователи имели к нему доступ, а также настроить для совместного использования. Существует несколько способов достижения этой цели.
В диалоговом окне Options (Параметры), отображающемся при выполнении команд меню Tools Options (Сервис / Параметры), во вкладке Advanced (Другие) имеется параметр Default open mode (Режим открытия, определенный по умолчанию). Здесь можно определить режим открытия базы данных, т.е. должна ли она открываться для монопольного доступа (только для одного пользователя на весь сеанс работы) или для общего доступа.
Если выбран режим Exclusive (монопольный доступ), базу данных имеет право открывать только один пользователь. В этом случае Access изменяет заголовок LDB-файла, тем самым блокируя его (подробнее об этом см. в разделе «LDB-файл») и запрещая доступ к данным для всех других пользователей. Очевидно, для многопользовательского приложения такая настройка использоваться не должна. Однако такие процедуры, как сжатие и восстановление, следует выполнять над базой данных, открытой для монопольного доступа.
Режим Shared (Общий доступ) позволяет открывать базу данных нескольким пользователям одновременно. При этом Access в момент открытия базы данных заносит информацию о подключившихся к ней пользователях в LDB-файл и задействует механизм блокировки и освобождения страниц и строк.
Эти и другие параметры можно задавать в командной строке во время запуска приложения Access. Некоторые из них перечислены в табл. 1.
Таблица 1 Параметры командной строки при запуске Access
Способы совместного использования базы данных Access
Существует несколько способов совместного использования базы данных Access в зависимости от потребностей и доступности ресурсов. В этой статье мы рассмотрим доступные варианты, преимущества каждого из вариантов и ресурсы для получения дополнительной информации.
В этой статье
Общие сведения о способах предоставления доступа к данным Access
Приложения баз данных меняются и увеличиваются с течением времени. Многие факторы влияют на требования и производительность, включая количество одновременных пользователей, сетевую среду, пропускную способность, задержку, размер базы данных, пиковое время использования и ожидаемые тарифы роста. Коротко говоря, если решение для базы данных прошло успешно, возможно, его потребуется развивать. К счастью, у Access есть более сложный путь, от простого к расширенному, который можно использовать для эффективного масштабирования решения. В следующей таблице перечислены сценарии доступа и рабочие нагрузки, которые помогут выбрать этот путь.
Предоставление общего доступа к одной базе данных
Это самый простой вариант с минимальными требованиями, но он обеспечивает наименьшую функциональность. При этом методе файл базы данных хранится на общем сетевом диске, и все пользователи одновременно его используют. Поскольку все объекты базы данных используются одновременно, несколько пользователей могут одновременно изменять данные, что ограничивает надежность и доступность. Может также снижаться производительность, поскольку все объекты базы данных пересылаются по сети.
Этот вариант подходит в том случае, если базу данных одновременно будут использовать несколько человек и пользователям не потребуется изменять структуру базы данных. Но этот метод менее безопасен, чем другие методы предоставления общего доступа к базе данных, так как у каждого пользователя есть полная копия файла базы данных, что повышает риск несанкционированного доступа.
Чтобы предоставить общий доступ к базе данных с помощью общей папки, выполните указанные ниже действия.
В домашних и малых офисных средах предоставьте общий доступ к папке с определенными людьми. Дополнительные сведения можно найти в разделе Общий доступ к файлам в сети в Windows 10.
Приложение Access должно быть настроено для открытия в режиме совместного доступа на компьютерах всех пользователей. Данный режим используется по умолчанию, однако это необходимо проверить: если пользователь откроет базу данных в монопольном режиме, другие пользователи не смогут работать с данными.
Запустите Access и на вкладке Файл выберите пункт Параметры.
В окне Параметры Access выберите пункт Параметры клиента.
В разделе Дополнительно в разделе режим открытия по умолчаниювыберите общий доступ, нажмите кнопку ОКи закройте Access.
Скопируйте файл базы данных в общую папку. Затем настройте атрибуты файла таким образом, чтобы разрешить доступ к файлу базы данных для чтения и записи. Для использования базы данных необходим доступ к ней с правами на чтение и запись.
На компьютере каждого пользователя создайте ярлык для файла базы данных. Дополнительные сведения можно найти в разделе Создание ярлыка на рабочем столе для программы или файла Office.
Совместное использование разделенной базы данных
Этот способ целесообразен при отсутствии сайта SharePoint или сервера базы данных. Вы можете предоставить общий доступ к разделенной базе данных в локальной сети. При разделении базы данных она реорганизуется в два файла: серверную базу данных, которая содержит таблицы данных, и клиентскую базу данных, в которой содержатся все остальные объекты базы данных (например, запросы, формы, отчеты). Каждый пользователь взаимодействует с данными с помощью локальной копии внешней базы данных.
Ниже перечислены преимущества разделения базы данных.
Повышенная производительность В сети используются только данные, а не таблицы, запросы, формы, отчеты, макросы и модули.
Повышенная доступность Транзакции базы данных, например редактирование записей, выполняются быстрее.
Улучшенная безопасность . Пользователи получают доступ к серверной базе данных через связанные таблицы; вероятность того, что злоумышленники могут получить несанкционированный доступ к данным через клиентскую базу данных, менее высока.
Повышенная надежность Если пользователь сталкивается с проблемой, а база данных неожиданно закрывается, то любое повреждение файла базы данных обычно ограничивается копией клиентской базы данных, открытой пользователем.
Гибкая среда разработки Каждый пользователь может независимо разрабатывать запросы, формы, отчеты и другие объекты базы данных, не влияя на работу других пользователей. Кроме того, вы можете разрабатывать и распространять новую версию клиентской базы данных, не нарушая доступ к данным, хранящимся в серверной части базы данных.
Дополнительные сведения можно найти в разделе разделение базы данных Access.
Предоставление общего доступа к данным на сайте SharePoint
Есть несколько способов предоставления доступа к данным Access на сайте SharePoint.
Связывающ Процесс связывания подключается к данным в другой программе, так что вы можете просматривать и редактировать последние данные в SharePoint и Access, не создавая и не сохраняя копии данных в Access. Если вы не хотите копировать список SharePoint в базу данных Access, но вместо этого вы хотите выполнять запросы и создавать отчеты на основе содержимого этого списка, вы можете создать ссылку на данные.
Местив Когда вы перемещаете данные из Access на сайт SharePoint, вы создаете списки на сайте SharePoint, которые остаются связанными с таблицами в базе данных. Мастер экспорта таблиц в SharePoint позволяет одновременно перемещать данные из всех таблиц и поддерживать их связь.
Об Несмотря на то что вы можете сохранить файл базы данных Access в OneDrive или библиотеку документов SharePoint, не рекомендуется открывать базу данных Access из этих папок. Файл может быть загружен локально для редактирования, а затем снова передан после сохранения изменений в SharePoint. Если вы открываете базу данных Access из SharePoint несколькими пользователями, может возникнуть несколько копий базы данных, что может привести к неожиданному поведению. Эта рекомендация применима ко всем типам файлов Access, включая одну базу данных, разделенную базу данных и форматы файлов ACCDB, ACCDC, ACCDE и ACCDR. Дополнительные сведения о развертывании Access можно найти в разделе развертывание приложения Access.
Предоставление общего доступа к данным с помощью сервера баз данных
Совместное использование базы данных можно организовать с помощью приложения Access и сервера баз данных (например, сервера SQL Server). Этот способ обеспечивает много преимуществ, но для него требуется дополнительное программное обеспечение — сервер баз данных.
Этот способ напоминает разделение баз данных, поскольку таблицы хранятся в сети, а у каждого пользователя есть локальная копия файла базы данных Microsoft Access, содержащая ссылки на таблицы, запросы, формы, отчеты и другие объекты базы данных. Преимущества этого метода зависят от используемого программного обеспечения сервера баз данных, но в общем случае они включают наличие учетных записей пользователей и избирательный доступ к данным, отличную доступность данных и удобные встроенные средства управления данными. Более того, большинство серверных приложений для работы с базами данных нормально работают с более ранними версиями Access, поэтому не требуется, чтобы все пользователи работали с одной и той же версией. Совместно используются только таблицы. Дополнительные сведения можно найти в разделе Миграция базы данных Access в SQL Server, Импорт или связывание данных в базе данных SQL Server, а также связывание или импорт данных из базы данных Azure SQL Server.
Преимущества совместного использования базы данных с помощью сервера баз данных
Высокая производительность и масштабируемость Во многих случаях сервер базы данных повышает производительность, чем единственный файл базы данных Access. Многие серверные продукты баз данных также обеспечивают поддержку очень больших баз данных размером примерно в 500 в течение интервала (2 ГБ) для файла базы данных Access (два гигабайта). Продукты сервера баз данных обычно работают очень эффективно, параллельно обрабатывая запросы (используя несколько собственных потоков в одном процессе для обработки запросов пользователей), а также свести к минимуму дополнительные требования к памяти при добавлении новых пользователей.
Повышенная доступность Большинство серверных продуктов базы данных позволяют создавать резервные копии базы данных во время ее использования. Таким образом, пользователям не нужно принудительно закрывать базу данных для резервного копирования данных. Более того, сервер баз данных обычно обрабатывает параллельное редактирование и блокировку записей очень эффективно.
Повышенная безопасность Невозможно полностью защитить базу данных. Тем не менее, серверные продукты базы данных предлагают надежную защиту, которая поможет вам защитить ваши данные от несанкционированного использования. Большинство серверных продуктов баз данных предлагают безопасность на основе учетных записей, позволяя указать, кто может видеть, какие таблицы. Даже в случае неправильного получения доступа к интерфейсу, несанкционированное использование данных запрещено защитой на основе учетной записи.
Автоматические возможности восстановления В случае сбоя системы (например, аварийного завершения работы операционной системы или отключения питания) некоторые серверные продукты баз данных имеют механизмы автоматического восстановления, которые восстанавливают базу данных до последнего состояния согласованности в течение минут, без администратора базы данных. участвовать.
Обработка на сервере Использование Access в конфигурации клиента и сервера помогает уменьшить сетевой трафик, обрабатывая запросы к базе данных на сервере перед отправкой результатов клиенту. Обработка сервером обычно более эффективна, особенно при работе с большими наборами данных.
Azure SQL Server Помимо преимуществ SQL Server, обеспечивает динамическую масштабируемость без простоев, интеллектуальной оптимизации, глобальной масштабируемости и доступности, исключения аппаратных затрат и сокращенного администрирования.
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).
Многопользовательский доступ к базам данных с помощью Microsoft SQL Server 2000: Методические рекомендации по выполнению лабораторной работы
Страницы работы
Содержание работы
Многопользовательский доступ к базам данных
с помощью Microsoft SQL Server 2000
Лабораторная работа №4
Знакомство с архитектурой и организацией баз данных «клиент — сервер» на основе преобразования локальной базы данных MS Access в базу данных MS SQL Server 2000.
2.1. Базы данных с архитектурой клиент/сервер
По архитектуре доступа к данным БД разделяются на следующие категории:
· локальные (настольные, однопользовательские),
В локальных базах данных на компьютере между прикладной программой (интерфейсом пользователя) и физическими файлами (хранилищем) данных функционирует ядро БД. В Access ядро БД Jet реализовано в виде набора файлов динамической библиотеки. Компоненты ядра читают, изменяют, записывают данные и управляют всеми служебными операциями.
В многопользовательских системах БД используется архитектура файл/ сервер или клиент/сервер. При этом архитектура клиент/сервер занимает доминирующее положение в современных системах обработки данных. Большинство СУБД, например, MS SQL Server, Oracle, Informix, Interbase, Sybase, MySQL и др., поддерживают такую архитектуру.
На рис.1 показаны различия архитектур файл/сервер и клиент/сервер
Рис.1. Структуры многопользовательских систем БД файл/сервер (а) и клиент/сервер (б).
Система файл/сервер функционирует как совместно используемый рабочими станциями жесткий диск сервера в локальной вычислительной сети. При этом СУБД или её ядро устанавливается на каждой рабочей станции. Такой сервер не способен обрабатывать запросы клиентов. Поэтому он вынужден пересылать на рабочую станцию (клиенту) для обработки всю необходимую информацию. Например, если требованиям запроса удовлетворяют всего несколько записей из всей таблицы, то на рабочую станцию передается полностью вся таблица. Это может резко повысить сетевой трафик и замедлить работу при многопользовательском доступе к БД. Структура файл/сервер может использоваться при числе одновременно работающих пользователей до
10 – 20, при большем количестве пользователей Access уже не справляется с нагрузкой.
В системах клиент/сервер всегда работают две программы: программа-клиент и программа-сервер. Программы-клиенты, являющиеся активными, обращаются с запросами к пассивной программе-серверу, которая обрабатывает запросы и возвращает результаты обработки программам — клиентам. Ядро БД размещается на сервере и способно одновременно обслуживать множество приложений-клиентов, выполняя обработку запросов и возвращая приложениям результаты обработки на сервере. Преимущества систем клиент/сервер:
1. Обеспечивается одновременный доступ к БД многих пользователей.
2. Повышается общая производительность системы.
3. Резко сокращается сетевой трафик.
4. Предоставляются более широкие возможности по защите данных от несанкционированного доступа и администрированию системы.
2.2. Преобразование БД MS Access в БД формата MS SQL Server 2000
Одной из наиболее популярных СУБД, используемых в многопользовательских базах данных с большим количеством пользователей, является MS SQL Server. Рассмотрим принципы организации базы данных типа «клиент-сервер» на примере экспорта ранее созданной базы формата MS Access в формат Microsoft SQL Server.
СУБД MS Access содержит специальный Мастер преобразования баз данных из формата Access в формат Microsoft SQL Server. Этот мастер позволяет преобразовать и перенести базу данных Access в существующую или новую базу данных на SQL Server, или создать новый проект Access 2002. Перед преобразованием можно разделить файл приложения Access на два файла: файл объектов данных и файл объектов приложения.
В Access 2007 Мастер преобразования запускается на вкладке «Работа с базами данных» → «Переместить данные» кнопкой → «SQL Server» (рис.2., рис3).
Рис.2. Местоположение кнопки вызова мастера преобразования баз данных в формат Microsoft SQL Server на ленте СУБД MS Access.
Рис.3. Начало работы с мастером преобразования.
На данном этапе мастеру необходимо указать имя сервера баз данных и имя пользователя, под которым осуществляется администрирование этого сервера. Если имена пользователя в MS SQL Server и операционной системе совпадают, то можно воспользоваться доверительным соединением, но в целях безопасности делать это рекомендуется не всегда, поскольку существует риск того, что информацией хранящейся в базе данных могут воспользоваться сторонние лица, работающие в операционной системе под тем же именем.
Рис.4. Окно выбора сервера для базы данных.
Следующий шаг определяет таблицы, которые будут перенесены на сервер баз данных (рис.5.). В последующем, на сервере появятся дополнительные таблицы, хранящие системную и резервную информацию о настройках базы данных.
Рис.5. Выбор таблиц для переноса на сервер баз данных.
Помимо таблиц, на сервер можно перенести их индексы, связи и все то, что потом позволит увеличить быстродействие и адекватность при обработке запросов к базе данных (рис.6.).
Рис.6. Выбор атрибутов таблиц для переноса на сервер баз данных.
Работа с проектом Microsoft Access очень похожа на работу с базой данных Microsoft Access. Процессы создания форм, отчетов, страниц доступа к данным, макросов и модулей практически не отличается от таковых при создании базы данных Microsoft Access. Подключившись к базе данных Microsoft SQL Server, из окна проекта можно просматривать, создавать, изменять и удалять таблицы, представления, сохраненные процедуры, определяемые пользователем функции и схемы баз данных с помощью конструктора баз данных, конструктора таблиц, конструктора запросов, построителя запросов и текстового редактора SQL. Этап, связанный с выбором приложения для базы данных позволяет оставить ранее созданное в СУБД MS Access приложение или создать проект, подразумевающий частичный перенос элементов приложения на сервер и их компиляцию в единое целое (рис.7.). Второй вариант является, как правило, является наиболее предпочтительным, поскольку в большей степени соответствует архитектуре «клиент-сервер» и снимает нагрузку по обработке данных с отдельных рабочих станций. При этом создается новый файл проекта Access.
Рис.7. Окно выбора изменений для приложения баз данных.
Остальные шаги мастера носят информативный характер и уведомляют пользователя о ходе преобразования базы данных. После завершения преобразования будет сгенерирован подробный отчет о выполненной процедуре, содержащий сведения о каждом преобразованном объекте.
MS Access (JET) подходит для многопользовательского доступа?
У меня есть продукт, предназначенный для настольного продукта с использованием файла MS Access в качестве БД.
теперь некоторым пользователям необходимо установить его на несколько ПК (скажем, 2 или 3) и поделиться базой данных.
Я думал поместить файл MS Access в общую папку и получить к нему доступ с ПК, но. реактивный двигатель предназначен для множественного доступа пользователей?
любые советы или вещи, чтобы быть в курсе этого?
изменить: Приложение является .net, используя базу данных как хранение (не используя базу данных в качестве интерфейса)
13 ответов
в ответах в этой теме так много дезинформации, что я не знаю, с чего начать. Я только что потратил 4 балла на репутацию, голосуя за ответы с вводящей в заблуждение и неправильной информацией в них.
движок базы данных Jet (который является всем, что здесь задействовано, как уточнил OP с помощью редактирования) по умолчанию многопользовательский-он был построен с нуля, чтобы быть таким.
совместное использование хранилища данных Jet-это очень надежный, когда сеть не является некондиционной. Это означает, что не WAN и не беспроводной, потому что полоса пропускания должна быть достаточной для Jet для поддержания файла LDB (для многопользовательской блокировки), что означает пинг экземпляром локального компьютера JET database engine один раз в секунду (с настройками по умолчанию), и потому что Jet не может восстановиться после отброшенного соединения (что довольно распространено в беспроводной среде).
ситуация, когда доступ падает вниз, когда интерфейс Доступ к приложению MDB является общим (что не относится к этому плакату). Причина неудачи в том, что Вы делитесь вещами, которые не могут быть надежно разделены и не имеют причин для совместного использования. Из-за того, как объекты Access хранятся в файле MDB (весь проект Access хранится в одном поле BLOB в одной записи в одной из системных таблиц), он очень подвержен повреждению, если его открывают несколько пользователей. По моей оценке, совместное использование интерфейса доступа (или неразрезанного MDB с таблицами и формы / отчеты / etc. all in one MDB) является источником 99,99% повреждений файлов Access/Jet.
мой основной ответ на вопрос OP заключается в том, что, да, Jet будет отличным хранилищем данных для приложения такого размера. Тем не менее, если есть какая-либо возможность для пользователей вырасти выше 25, то, возможно, было бы лучше начать с нуля с движка базы данных, который является более надежным при более высоких популяциях пользователей.
Это вполне возможно сделать, но вы должны разделить базу данных на переднем конце (формы, запросы, код) и задний конец (только данные). Каждый пользователь должен иметь передний конец на своем компьютере, связываясь с общим задним концом.
Это будет медленно, так как Jet генерирует тонну сетевого трафика. Microsoft также постепенно осуждает Access как инструмент разработки. Например, Access 2007 имеет гораздо менее сложную модель безопасности, чем Access 2003.
как разработчик доступа долгое время я постепенно отдаляюсь от доступа.
Не делай этого. база данных Jet утверждает, что может поддерживать несколько пользователей, но невероятно легко использовать мастер увеличения для преобразования файла доступа в базу данных Sql Express. Этот файл базы данных может быть легко заблокирован пользователем или администратором, и все пользователи не смогут использовать базу данных.
. и Sql Express является бесплатным. Путь обновления оттуда до полного экземпляра Sql Server или какой-либо другой коммерческой базы данных простой.
с 2 или 3 пользователями в надежной локальной сети вы должны быть в порядке, если вы часто поддерживаете сетевой диск.
избегайте любых бит / bool полей в ваших таблицах-Jet имеет некоторые неприятные проблемы с коррупцией с множественным доступом к ним.
также имейте в виду, что все блокировки доступа оптимистичны: вы будете получать грязные чтения изредка.
MS Access предназначен для небольших сценариев office, таких как: некритическое использование light office, которое можно настроить с помощью минимум программирования.
ожидайте, что файл данных будет поврежден время от времени-резервное копирование регулярно.
ACE / Jet engine-отличная часть программного обеспечения, но, хотя это было designed для поддержки нескольких пользователей, на самом деле поддержка нескольких пользователей на практике не одна из его сильных сторон. Последней каплей для меня является то, где затем удалена безопасность уровня пользователя (ULS) из движка: я полагаю, что могу представить простую ситуацию с базой данных, где все пользователи будут иметь одинаковые привилегии (т. е. доступ администратора к все объекты базы данных), но IMO, который не поддерживает нескольких пользователей ну, по сравнению, скажем, С MS SQL Server.
Да, он поддерживает доступ несколькими (то есть небольшим, размером с рабочую группу, числом) пользователей через общий сетевой файл. Однако архитектура общего файлового ресурса просто не идеальна для поддержки одновременной записи в файл несколькими пользователями. Системы клиент/сервер базы данных (SQL Server и др.) как правило, обеспечивает лучшую производительность, безопасность и надежность.
как сисадмин, пожалуйста, не используйте доступ для чего-либо многопользовательского. Делайте то, что предлагает Джефф Фриц, и используйте базу данных, предназначенную для многопользовательского доступа. Вы можете подумать, что ваше маленькое приложение будет доступно только нескольким людям, но я Гарантирую Вам, что к концу года у него будет сто пользователей и пятьдесят новых функций. И если это все Доступ, а не VB / SQL Express, ваши люди Ops ворвутся в ваш дом однажды ночью и разрежут ваш горло.
Access не является клиент-серверным приложением и предоставляет очень мало возможностей для резервного копирования/восстановления или какой-либо автоматизации. Не говоря уже о том, что интерфейс и БД очень тесно связаны. так что если вы когда-нибудь захотите превратить это в веб-приложение, или делать какие-либо серьезные изменения, ваш мир будет наполнен болью.
Это было сделано так много раз так много общих инженеров программного обеспечения, где мы видели.mdb поврежден в многопользовательской ситуации. Если так много опытных специалистов-разработчиков доступа могут сделать это правильно, как я склонен верить, то мы, универсалы, должны делать что-то неправильно, и что-то должно быть довольно фундаментальным, но не очевидным для многих из нас, чтобы убежать от вещи, кричащей » никогда больше!»Поэтому, если вы считаете себя опытным разработчиком доступа специалиста (или вы знаете, как найти один), то пойти на это. Но если вы универсалист или случайный пользователь, ищущий легкий задний конец, я предлагаю вам искать в другом месте (SQL Server-хорошая ИМО).
Если ваши пользователи могут ждать в два раза дольше для приложения с половиной функций, которые они хотят, то не используйте Access.
Jet не имеет сложной логики блокировки, необходимой для поддержки многопользовательских сценариев. Вы можете уйти с его помощью, если ваше приложение в основном читает и с низким уровнем конкуренции.
Я видел, что веб-сайты поддерживают многих пользователей, но я бы рекомендовал SQL Express, если у вас нет веской причины выбрать Jet.
Я могу сказать вам из болезненного опыта, что Jet 3/3.5 не было надежным. Я видел, что он часто падает под легкой нагрузкой, и когда были сбои, вы рисковали повреждением данных. Раньше он был чрезвычайно чувствителен к любым проблемам с питанием, любому клиенту, врезающемуся в него (даже пользовательский интерфейс, связанный с mdb), и любым проблемам LAN. Более поздние версии Jet могут быть лучше, но переход на Sql Server-это, на мой взгляд, путь к чему-либо, кроме тривиального ввода данных с небольшим число пользователей. Sql Express бесплатен, и вы ничего не теряете, особенно если ваш пользовательский интерфейс находится в .Net, а не в Access.
EDIT: Microsoft не считает, что вы также должны полагаться на Jet 4.
Microsoft Jet не предназначен для использования с высоконапряженными серверными приложениями, серверными приложениями с высоким параллелизмом или 24 часа в сутки, семь дней в неделю серверными приложениями. Это включает сервер приложения, такие как веб-приложения, коммерческие приложения, транзакционные приложения и приложения сервера обмена сообщениями. Для этих типов приложений лучшим решением является переключение на истинную клиентскую / серверную систему баз данных, такую как Microsoft Data Engine (MSDE) или Microsoft SQL Server. При использовании Microsoft Jet в приложениях с высоким напряжением, таких как Microsoft Internet Information Server (IIS), могут возникнуть следующие проблемы: Повреждение базы данных Проблемы со стабильностью, например, сбой или блокировка IIS Внезапный сбой или постоянный сбой подключения драйвера к допустимой базе данных, требующий повторного запуска службы IIS
просто проверьте, есть ли файл блокировки БД (например .ldb) есть или нет. Если он там, кто-то получает доступ к этому файлу. Если его там нет, в настоящее время нет доступа к этому файлу, и вы можете продолжить. В противном случае дождитесь, когда этот файл (.ldb) больше не существует.
Если вы используете сервер терминалов, производительность очень хорошая. Мы имеем больше решений до 50 потребителей на одном mdb доступа. Разработка осуществляется очень быстро и легко.
- каждый может копировать данные mdb
- нет права доступа
- ограниченные процедуры хранения
- оптимизация (сжатие и восстановление) возможна только без использования базы данных данных
- ограничение до 2 ГБ!