Устаревшее приложение MS Access должно поддерживать несколько пользователей.

StackOverflow https://stackoverflow.com/questions/1063997

  •  21-08-2019
  •  | 
  •  

Вопрос

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

Приложение довольно большое, с сотнями форм, отчетов, запросов и таблиц.

В настоящее время у нас есть интерфейс, разделенный примерно на 7 компонентов MDE, каждый из которых, по сути, представляет собой отдельное приложение, объединенное общим интерфейсом, который по сути представляет собой просто графический интерфейс меню.

Мы используем связанные таблицы для подключения этого внешнего интерфейса к серверной части MS Access, используя вызовы OpenDatabase(C:\access.mdb) в самом коде.Это приложение существует уже некоторое время и поэтому использует DAO для подключения к серверной части Access 97.

Это означает, что у каждого пользователя приложения есть своя локальная копия базы данных для внесения изменений.У нас есть среда, тщательно контролируемая изменениями, которая гарантирует, что только один человек может работать с данными одновременно; он должен проверить все свои изменения, прежде чем передать основную базу данных следующему человеку.

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

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

Все приложение, скорее всего, будет переработано через год или два, при этом как передняя, ​​так и внутренняя части будут удалены от MS Access.Однако нам как можно скорее нужен многопользовательский доступ.

Итак, каков самый быстрый путь к многопользовательскому счастью?

Предложения, которые мы рассматриваем, включают:

  • Настройка VPN, чтобы MS Access считал, что он обращается к обычному сетевому диску.Похоже, это будет медленно, и я не уверен, что VPN достаточно надежен, но в любом случае это всего лишь временное решение, которое нам нужно.
  • Преобразование серверной части mdb во что-то, предназначенное для многопользовательского удаленного использования, например SQL Server.Мы просто не знаем, как сделать это быстро и легко (например, мы полагаемся на правила проверки полей). Вероятно, нам также придется преобразовать обратно в формат MS Access, поскольку другие приложения принимают те же файлы .mdb в качестве входных данных.
  • Практически все, что могут сделать 1-2 человека за пару месяцев.

РЕДАКТИРОВАТЬ:Отвечая на комментарии ниже.

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

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

Однако грядут большие изменения, и нам не дали достаточно времени, чтобы работать таким образом.Нам нужно, чтобы несколько человек работали над данными одновременно.Теперь я знаю, что вы можете поделиться файлом mdb на сетевом диске и заставить несколько человек в одном офисе работать с этим файлом с минимальным риском или вообще без него, но нам нужны люди из разных компаний, чтобы работать с данными одновременно. .Насколько я понимаю, настройка VPN для обмена данными — плохой план.

Я считаю, что нам нужно заменить серверную часть MS Access и перейти на что-то вроде SQL-сервера.Но насколько легко преобразовать схему таким образом?Как правила проверки таблицы MS Access представлены в SQL Server?

Это было полезно?

Решение

Как правило, право доступа к ящику предназначено для многопользовательского доступа как к общему файловому ресурсу.Это означает, что вы можете взять серверную базу данных (файл mdb) и поместить ее в общую папку на сервере.Это позволит нескольким людям в вашем офисе одновременно запускать приложение.Однако это означает, что мы говорим о типичной офисной локальной сети.Когда вы начинаете говорить об удаленных подключениях, VPN и глобальных сетях (WANS), то использование доступа в качестве общего файлового ресурса не является стабильным.

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

Однако, если говорить о каком-то VPN или WAN, то одним из возможных решений является перемещение вашего внутреннего файла mdb на SQL-сервер и продолжение использования всех форм, отчетов и т. д.из вашего текущего приложения (большая часть вашего приложения будет работать, как и раньше, когда вы это сделаете).

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

Однако если вы говорите о трех-четырех пользователях в типичной офисной локальной сети, вполне возможно, что ваше приложение будет работать с очень небольшими изменениями как есть, и вы просто переместите файл внутренней базы данных в общую папку где-нибудь на сервере.Однако я не могу подчеркнуть, что это работает только в том случае, если все люди находятся в одной локальной сети небольшого офиса, а не через какое-то удаленное соединение или WAN/VPN.Поэтому в случае WAN/VPN используйте службы терминалов или рассмотрите возможность переноса серверной части на сервер SQL и продолжайте использовать интерфейс приложения как есть.


изменить - дополнительная информация:Итак, получив дополнительную информацию, мы можем двигаться дальше.Как уже упоминалось, ms-доступ прямо из коробки является многопользовательским.Для работы с этими данными вам нужны люди из разных мест.Таким образом, это означает, что ваше приложение должно быть настроено для многопользовательской работы независимо от этой проблемы с другим местоположением.После того, как вы настроили приложение для нескольких пользователей, вы ЗАТЕМ РЕШАЕТЕ проблему, позволяющую людям использовать программное обеспечение из разных мест.

Это ничем не отличается от того, если бы у нас было что-то для управления рождественской вечеринкой компании.Если у нас есть дизайн, согласно которому после рождественской вечеринки мы удаляем весь файл, чтобы начать заново для рождественской вечеринки в следующем году, тогда мы ВСЕ ЕЩЕ можем разрешить многократное использование этого приложения.Однако дизайн таков, что из-за вашего дизайна вы не можете одновременно проводить несколько рождественских вечеринок.Так что в данном случае дело не в том, что приложение многопользовательское.В сценарии такого типа можно фактически добавить новую таблицу, называемую годовой таблицей рождественской вечеринки.Затем можно связать все таблицы приложения с этой главной таблицей как дочерние таблицы.Таким образом, для этого дизайна вы можете одновременно активировать несколько рождественских вечеринок.Затем, когда вы запускаете приложение, пользователям предлагается какой-то список, чтобы выбрать, над какой рождественской вечеринкой вы хотите работать.

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

То есть вы не делаете MS доступ многопользовательским, MS доступ многопользовательский прямо из коробки И ничего делать не надо, кроме как внедрить некоторые технологии, позволяющие пользователям в разных местах пользоваться приложением.Итак, это то, что делает TS, а также SQL-сервер может сделать за вас.

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

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

Таким образом, использование SQL-сервера или служб терминалов не делает ваше приложение более (или менее) многопользовательским, чем сейчас.Эти технологии, безусловно, могут увеличить количество пользователей, которые могут использовать приложение одновременно.

Таким образом, доступ MS теперь многопользовательский.Однако то, что делает SQL-сервер или TS, обеспечивает гораздо большую гибкость с точки зрения того, как пользователи удаленно подключаются к этому приложению.

Другие советы

ИМХО, вам обязательно понадобится преобразовать базу данных в многопользовательский сервер, независимо от того, какие другие решения вы рассматриваете.Есть мастер увеличения размера, который должен оказаться полезным (http://support.microsoft.com/kb/237980), вы, вероятно, встретите элементы, которые разрешены в Access, а SQL-сервер - нет, но по большей части это должно быть безболезненно.Вы можете указать своим локальным копиям доступа использовать этот новый источник данных (например, через ODBC), и я считаю, что все это должно работать примерно одинаково.Не делал этого много лет и понятия не имел, во что обернутся эти правила проверки полей (разве они все еще не будут в форме?).Вы можете загрузить пробную копию SQL-сервера и сделать это менее чем за час, чтобы почувствовать, сколько усилий это потребует.

Как обычно, вы получили отличный ответ от Альберта Каллала.

Если вы хотите рассмотреть возможность перехода на SQL Server, есть инструмент из группы SQL Server.Помощник по миграции SQL Server для доступа (SSMA Access)http://www.microsoft.com/sql/solutions/migration/access/default.mspx это лучше, чем мастер увеличения размера Access.

Также см. мои «Случайные мысли об увеличении размера SQL Server» на странице «Советы по Microsoft Access» по адресу: http://www.granite.ab.ca/access/sqlserverupsizing.htm

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top