Подтвердить что ты не робот

Доступ MS Access (JET) подходит для многопользовательского доступа?

У меня есть продукт, предназначенный для работы с настольными продуктами с использованием файла MS Access в виде базы данных.

Теперь некоторым пользователям необходимо установить его на несколько ПК (скажем, 2 или 3) и добавить базу данных.

Я думал разместить файл MS Access в общей папке и получить доступ к нему с ПК, но... JET Engine предназначен для множественного доступа пользователя?

Любые советы или вещи, которые нужно знать об этом?

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

4b9b3361

Ответ 1

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

  • Механизм базы данных Jet (что все, что здесь задействовано, поскольку OP, разъясненный с помощью редактирования) по умолчанию является многопользовательским - он был построен с нуля так, чтобы быть таким.

  • совместное использование хранилища данных Jet очень надежное, когда сеть не является некачественной. Это означает, что WAN, а не беспроводной, потому что пропускная способность должна быть достаточной для поддержки Jet для LDB файла (для многопользовательской блокировки), что означает пинг по вашему локальному компьютеру из экземпляра ядра базы данных Jet один раз в секунду (с настройки по умолчанию) и потому, что Jet не может восстановиться из сброшенного соединения (что довольно часто встречается в беспроводной среде).

  • ситуация, когда Access падает, - это когда общий доступ к приложению Access MDB является общим (что не подходит для этого плаката). Причина, по которой он терпит неудачу, заключается в том, что вы делитесь вещами, которые нельзя надежно распределять, и у них нет оснований для совместного использования. Из-за того, как объекты Access хранятся в файле MDB (весь проект Access хранится в одном поле BLOB в одной записи в одной из системных таблиц), он очень подвержен коррупции, если несколько пользователей открывают его. По моей оценке, общий доступ к интерфейсу Access (или нерасщепленный MDB с таблицами и формами/отчетами и т.д. В одном MDB) является источником 99,99% сбоев файлов Access/Jet.

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

Ответ 2

Это вполне осуществимо для этого; но вы ДОЛЖНЫ разбить базу данных на передний план (с формами, запросами, кодом) и задним концом (только данные). Каждый пользователь должен иметь переднюю часть на своем собственном компьютере, ссылаясь на общий задний конец.

Он будет медленным, так как Jet генерирует тонну сетевого трафика. Microsoft также постепенно обесценивает Access как инструмент разработки. Access 2007, например, имеет гораздо менее сложную модель безопасности, чем Access 2003.

Как долго разработчик доступа, я постепенно удаляюсь от Access.

Ответ 3

Не делайте этого... База данных Jet утверждает, что может поддерживать несколько пользователей, но невероятно просто использовать мастер увеличения для преобразования вашего файла доступа в базу данных Sql Express. Этот файл базы данных может быть легко заблокирован пользователем или администратором, и все ваши пользователи не смогут использовать базу данных.

... и Sql Express бесплатный. Ваш путь обновления оттуда до полного экземпляра Sql Server или какой-либо другой коммерческой базы данных прост.

Ответ 4

С 2 или 3 пользователями в надежной локальной сети вы должны быть в порядке, если вы часто возвращаете сетевой диск.

Избегайте любых полей бит /bool в ваших таблицах. У Jet есть некоторые неприятные проблемы с коррупцией с множественным доступом к ним.

Также помните, что вся блокировка в Access оптимистична: иногда вы будете получать грязные сообщения.

MS Access предназначен для небольших офисных сценариев, таких как: некритическое освещение офиса, которое вы можете настроить с минимальным программированием.

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

Ответ 5

Двигатель ACE/Jet - отличное программное обеспечение, но, хотя он был разработан для поддержки нескольких пользователей, фактически поддержка нескольких пользователей на практике не является одной из его сильных сторон. Последняя солома для меня - это то, где затем удалили защиту уровня пользователя (ULS) из механизма: я предполагаю, что могу представить себе ситуацию с простой базой данных, когда все пользователи будут иметь одинаковые привилегии (то есть доступ администратора ко всем объектам базы данных), но IMO, которая не является поддерживая несколько пользователей, по сравнению с, скажем, MS SQL Server.

Ответ 6

Да, он поддерживает доступ несколькими пользователями (то есть небольшим, размером в рабочую группу, числом) пользователей через общий сетевой файл. Тем не менее, общая файловая архитектура просто не идеальна для поддержки одновременной записи в файл несколькими пользователями. Система базы данных клиент/сервер (SQL Server и т.д.) Обычно обеспечивает лучшую производительность, безопасность и надежность.

Ответ 7

Как системный администратор, не используйте Access для чего-либо многопользовательского. Сделайте то, что предлагает Джефф Фриц и использует базу данных, предназначенную для многопользовательского доступа. Вы можете подумать, что ваше маленькое приложение будет доступно только нескольким людям, но я гарантирую, что к концу года у него будет сто пользователей и пятьдесят новых функций. И если это все Access, а не VB/SQL Express, ваши люди Ops однажды врываются в ваш дом и разрезают вам горло.

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

Ответ 8

Это было сделано так много раз многими родовыми инженерами программного обеспечения, в которых мы видели, как .mdb стал коррумпированным в ситуации с несколькими пользователями. Если многие опытные специалисты Access Access могут получить это правильно, как я склонен верить, тогда мы, генералы, должны делать что-то неправильно и что что-то должно быть довольно фундаментальным, но неочевидным для многих из нас, чтобы убежать от вещи крича "Никогда больше!" Поэтому, если вы считаете себя опытным специалистом Access Developer (или знаете, как его найти), то идите на него. Но если вы универсальный или случайный пользователь, который ищет легкий задний конец, я предлагаю вам посмотреть в другом месте (SQL Server - это хороший IMO).

Ответ 9

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

Ответ 10

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

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

Ответ 11

Если вы используете Terminal Server, производительность очень хорошая. У нас больше решений до 50 пользователей на одном доступном mdb. Развитие очень быстрое и быстрое развертывание.

Проблемы:

  • все могут копировать данные mdb
  • нет прав доступа
  • ограниченные процедуры хранения
  • оптимизировать (сжимать и восстанавливать) возможно только без использования данных База данных
  • ограничение до 2 ГБ!

Ответ 12

Я могу рассказать вам от мучительного опыта, что Jet 3/3.5 не был надежным. Я видел, как он часто падал под легкой нагрузкой, и когда произошли сбои, вы рискуете повреждением данных. Раньше он был чрезвычайно чувствителен к любым проблемам с питанием, любой клиент, сбившийся с него (даже пользовательский интерфейс, связанный с mdb), и любые проблемы с локальной сетью. Более свежие версии Jet могут быть лучше, но переключиться на Sql Server - это, по-моему, способ, по моему мнению, для чего угодно, кроме тривиального ввода данных с небольшим количеством пользователей. Sql Express свободен, и вы ничего не теряете, особенно если вы являетесь пользовательским интерфейсом .Net, а не Access.

EDIT: Microsoft не думает, что вам следует полагаться и на Jet 4.

from: http://support.microsoft.com/kb/303528

Microsoft Jet не предназначен для использования с серверными приложениями с высоким напряжением, серверными приложениями высокого уровня concurrency или 24 часа в сутки, 7 дней в неделю серверными приложениями. Сюда входят серверные приложения, такие как веб-приложения, коммерческие приложения, транзакционные приложения и серверные приложения для обмена сообщениями. Для этих типов приложений лучшим решением является переход на настоящую клиентскую/серверную систему баз данных, такую ​​как Microsoft Data Engine (MSDE) или Microsoft SQL Server. Когда вы используете Microsoft Jet в приложениях с высоким напряжением, таких как Microsoft Internet Information Server (IIS), может возникнуть одна из следующих проблем: Нарушение базы данных Проблемы с устойчивостью, такие как сбой или блокировка IIS Внезапный сбой или постоянный отказ драйвера подключиться к действительной базе данных, требующей перезапуска службы IIS

Ответ 13

просто проверьте, есть ли файл блокировки db (например,.ldb) или нет. Если он есть, кто-то обращается к этому файлу. Если его там нет, в настоящее время никто не обращается к этому файлу, и вы можете продолжить. В противном случае дождитесь, когда этот файл (.ldb) больше не будет существовать.