Разделение базы данных MS Access - расположение части переднего плана

Один из лучших способов для разработки Access разбивает приложение Access на 2 части; Передняя часть, которая содержит все объекты, кроме таблиц, и серверную часть, которая содержит таблицы.

На странице msdn имеется ссылка на статью Разделение баз данных Microsoft Access для повышения производительности и упрощения обслуживания, подробно описывающий процесс.

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

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

Мой вопрос:

Предполагая, что у самих пользователей нет прав на изменение части Front End приложения, каковы были бы недостатки / опасности, если бы это оставалось на сервере рядом с Back End копией?

Я вижу здесь проблемы с производительностью, но есть ли здесь какие-либо опасности, такие как возможные повреждения и т. Д.?

Спасибо

ИЗМЕНИТЬ

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

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

Например. когда вам предоставляется существующее решение, которое использует подход как FE, так и BE на сервере. Если предположить, что производительность приемлемая, а заказчик не хочет менять подход, вы все равно будете настаивать на этом? А почему именно? Например, опасность возможного повреждения данных определенно была бы достаточно веским аргументом, но так ли это?


Это часть ответа на мой предыдущий вопрос От SQL Server к MS Access 2007


person kristof    schedule 06.01.2010    source источник
comment
Если вопрос заключается в хранении индивидуального интерфейса пользователя для каждого пользователя на сервере, это просто вопрос производительности (и здравого смысла - интерфейс - это приложение, и в наши дни мы не устанавливаем пользовательские приложения на сервер, хотя это было обычным делом около 15 лет назад в среде Novell). Если вы подумываете о совместном использовании одного интерфейса, это другой котел, и чего следует избегать любой ценой.   -  person David-W-Fenton    schedule 07.01.2010
comment
Но мы по-прежнему устанавливаем пользовательские приложения на терминальные серверы / серверы Citrix.   -  person Tony Toews    schedule 07.01.2010
comment
спасибо Дэвид. Я согласен, что все это звучит как здравый смысл. Когда вы говорите, что общего доступа к одному интерфейсу ... следует избегать любой ценой, не могли бы вы на самом деле прояснить, почему, каковы здесь опасности, помимо производительности, при условии, что у пользователей нет разрешений на изменение FE   -  person kristof    schedule 07.01.2010
comment
Совместное использование одного внешнего интерфейса приводит к повреждению этого внешнего интерфейса и ненадежному поведению во время выполнения для некоторых видов операций VBA. Совместное использование внешнего интерфейса - самая серьезная причина коррупции в Access, и никто из тех, кто пытался это сделать, никогда бы не подумал об этом. Ни один профессиональный разработчик Access, который едва достигает компетентности, никогда бы не настроил приложение таким образом.   -  person David-W-Fenton    schedule 08.01.2010
comment
Спасибо, Дэвид, это именно то, что я хотел знать, и теперь это также описано в ответе Тони.   -  person kristof    schedule 08.01.2010


Ответы (4)


Единственный недостаток сохранения отдельных пользовательских копий FE на сервере - это производительность сети. Это не повлияет на повреждение данных.

Но вы не должны разделять FE между несколькими пользователями. Это склонно к повреждению FE и другим странностям. Каждый пользователь должен получить свою копию FE. Также вы не можете заменить его новой копией, пока пользователи ее используют.

Клиент годами работал с FE в отдельных пользовательских папках на файловом сервере, но запускал msaccess.exe в кластере Citrix. ИТ-персонал не хотел, чтобы что-либо обновляло локальные жесткие диски кластерных серверных систем Citrix.

Что касается развертывания FE, см. Auto FE Updater на моем веб-сайте. На следующей неделе ожидаются огромные изменения, которые значительно упростят как первоначальную установку сервера, так и первоначальную установку пользователем.

person Tony Toews    schedule 07.01.2010
comment
Спасибо Тони за это. Если я правильно понимаю, сценарий, который вы здесь описываете, заключается в том, что у каждого пользователя есть отдельный FE на сервере - и кажется интуитивно понятным, что единственным недостатком здесь будет производительность сети. Как насчет ситуации, когда все пользователи используют только один FE? - person kristof; 07.01.2010
comment
И большое спасибо за то, что поделились Auto FE Updater - person kristof; 07.01.2010
comment
Я обновил свое сообщение в ответ на редактирование OP, чтобы препятствовать распространению FE. Спасибо за добрые слова об Auto FE Updater - person Tony Toews; 08.01.2010

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

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

Существует ряд утилит для обновления интерфейсной версии на рабочем столе по мере необходимости, или вы даже можете написать такую ​​утилиту самостоятельно.

person Fionnuala    schedule 07.01.2010
comment
спасибо, Рему, я бы рассмотрел тот факт, что вы можете разрабатывать обновления для своего FE, а затем развертывать изменения, просто заменяя старые на новые, не беспокоясь о данных, как довольно большое преимущество перед однофайловым решением. Это не потеряно в описанном мною сценарии. Влияние на производительность довольно интуитивно понятно, но мне просто интересно, есть ли здесь более серьезные подводные камни, такие как повреждение данных и т. Д. - person kristof; 07.01.2010
comment
Я немного добавил к своему ответу. - person Fionnuala; 07.01.2010

Я согласен с остальными. Хранить fe на сервере не рекомендуется. Просто поместите на свой сервер командный файл, который выполняет толчок. Когда у вас есть обновление, отправьте ярлык для командного файла по электронной почте. Это одно из многих решений. После того, как вы его настроите, это не проблема.

Сет

person Seth Spearman    schedule 07.01.2010
comment
Пользователи, использующие ярлыки в пакетных файлах, могут получать предупреждения системы безопасности. Я бы предпочел не приучать пользователей игнорировать предупреждения системы безопасности. Также некоторые пользователи никогда не будут запускать эти командные файлы и т. Д. И т. Д. - person Tony Toews; 08.01.2010

Как программист Access 2007, использующий Front End (FE), который связан с базой данных Back End (BE) (также известной как Split Database), я сделал и то, и другое. Отправка обновленного FE пользователям имеет другие накладные расходы, особенно если используются сторонние элементы управления или приложения.

Что касается Citrix, то еще в Access 97 менеджер Citrix смог разрешить мне разместить одну копию FE в расположении файла сервера. Это создаст новый экземпляр для каждого пользователя, который вошел в систему. Мы смогли использовать более 50 пользователей без каких-либо последствий. Я должен уточнить это, сказав, что код Access VBA использовал эффективные обновления и транзакции с откатами, а не просто операторы Select.

Моя проблема сегодня - это Access 2007, работающий на сервере Citrix (Windows 2003). Когда я единственный человек, вошедший в Citrix, приложение (я выбрал большой сложный отчет, который создает настраиваемую электронную таблицу Excel с помощью автоматизации для теста) работает в пределах 1% от скорости запуска FE с моей рабочей станции XP и подключения к БЫТЬ на жестком диске сервера Citrix.

Но когда два или три человека входят в Citrix Server, один и тот же отчет занимает в три раза больше времени. Однако, пока в Citrix вошли два или три человека, я могу запустить свой FE со своей рабочей станции XP, и он работает точно так же, как однопользовательский в Citrix.

FE, размещенный на общем сетевом диске, которым пользуются два или три пользователя, НЕ рекомендуется по этой же причине. Access FE не предназначен для совместного использования (* я не буду вдаваться в подробности *). Вот почему люди ставят FE на каждую рабочую станцию ​​и совместно используют одну базу данных (BE).

Чего мне не хватает в Citrix, так это некоторых хороших пошаговых инструкций по запуску Access FE на Citrix. В идеале можно было бы опубликовать один файл. Когда пользователь входит в Citrix, Citrix должен сделать копию FE и назначить ресурсы (для доступа) для входа в систему этого пользователя. Я думаю, что это именно то, что MS Office делает автоматически или, по крайней мере, имеет инструкции, как это сделать.

Если такой документ существует, опубликуйте его. Такой программист, как я, хотел бы передать его администратору Citrix. Это решило бы множество проблем.

person Rx_    schedule 15.07.2010
comment
Вы обнаружите, что администраторы Citrix и общие системные администраторы Windows Server не получают доступа и часто настраивают вещи таким образом, чтобы вызвать проблемы. У меня нет ответов на ваши вопросы, поскольку я когда-либо развертывал только на обычном WTS, а не на серверах Citrix. Я никогда не видел проблем, которые вы описываете в этом сценарии. Интересно, пробовали ли вы AutoFEUpdater Тони для распространения изменений? Он разработал его специально для соответствия требованиям работы в средах Citrix / WTS. - person David-W-Fenton; 16.07.2010