Are there any cases where MS Access is a better choice than SQL Server?

Этот вопрос был вдохновлен тем, который я задал почти год назад -ANY-ORMs-что-работа-с-мс-доступа для-прототипирования - который недавно снова стал активным, но в качестве дебатов Access против SQL Server.

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

Для тех из вас, кто использовал обе технологии, были ли случаи, когда вы использовали бы Access over SQL Server?

Зачем?

И как вы можете улучшить свои шансы на успех?

Например, в настольном приложении, в котором будет один или небольшое количество пользователей, может ли Access быть лучшим выбором?

Или взять обратный курс, когда вы должныизбежать Доступ с самого начала?

Опять же почему?

редактировать Когда я говорю «Доступ», я хотел бы получить отзыв о двух вещах:

Использование только компонента базы данных (Jet / ACE)

Использование функций разработки приложений (отчеты, сценарии и т. Д.)

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

(Просто для протокола, у меня нет собаки в этом бою - я довольный пользователь SQLite.)

 Tom Bushell29 сент. 2010 г., 22:36
@marc_s - спасибо за правописание. Будучи крашеным в шерстяной Bluenoser (родился и вырос в Галифаксе, живу на Лонг-Айленде, штат Нью-Йорк, США), я не мог не заметить вашу иконку аватара ... хотите объяснить?
 JeffO03 окт. 2010 г., 01:49
Было бы полезно всем, если бы Access как IDE был отдельным от Jet / ACE v SQL Server.
 marc_s29 сент. 2010 г., 22:48
@Tom Bushell: <хе-хе>, этот флаг действительно замечают время от времени. Хорошо: я швейцарец, но жил и работал в Галифаксе в течение трех лет (2000-2002) и сделал Новую Шотландию своим вторым домом, так сказать.
 Tom Bushell29 сент. 2010 г., 23:06
@marc_s - спасибо за объяснение - надеюсь, у вас был приятный отдых!
 OMG Ponies29 сент. 2010 г., 23:35
@dportas: SQL Server имеет службы отчетов, которые также бесплатны. Я не знаю, доступен ли он в Compact Edition, но в Express Edition (также бесплатно).
 David-W-Fenton05 окт. 2010 г., 23:17
Вы не можете отделить Access от Jet / ACE. Ну, вы можете - это называется ADP, и оно оказалось не очень успешным и не очень универсальным. Причина, по которой Access не-ADP настолько универсален, заключается именно в том, что Jet / ACE может подключаться практически ко всему. Мне кажется, что разделение Access от Jet / ACE полностью исключило бы 90% преимуществ Access.
 David-W-Fenton29 сент. 2010 г., 22:52
@Randy Minder: Базовый пункт верен, но ваша терминология упрощает использование Jet / ACE как механизма базы данных.
 David-W-Fenton29 сент. 2010 г., 22:53
@Tom Bushell: отредактируйте свой вопрос, чтобы использовать Jet / ACE там, где вы говорите, Access. Иначе, довольно непонятно, о чем ты говоришь.
 Tom Bushell29 сент. 2010 г., 22:54
@ Дэвид - сделает.
 nvogel29 сент. 2010 г., 23:28
@Tom Bushell: Относительно функций "app dev". С чем вы хотите сравнить их? Очевидно, не SQL Server. И в любом случае приложения Access могут отлично работать с базами данных SQL Server.
 Randy Minder29 сент. 2010 г., 18:27
Это все равно что спросить, есть ли случаи, когда велосипед - лучший выбор, чем автомобиль. Конечно, есть. Велосипеды обычно для отдыха, автомобили для серьезных перевозок. Доступ против SQL Server одинаков.
 Gennady Vanin Геннадий Ванин01 окт. 2010 г., 05:51
@ David-W-Fenton, BIDS - Business Inteligence Development Studio является частью дистрибутива / установки SQL Server и, по сути, представляет собой Visual Studio .NET. Возможно, я не понимаю ваш вопрос или то, что вы пытаетесь передать (подразумевается)
 nvogel29 сент. 2010 г., 21:43
Согласитесь с Рэнди, что требуется разъяснение того, что спрашивают. Вы не можете создать отчет в SQL Server! С другой стороны, вы можете создать приложение на основе SQL Server в Access. Мое предположение состоит в том, что на самом деле ставится вопрос о том, использовать ли Jet / ACE или SQL Server. Это верно?
 David-W-Fenton01 окт. 2010 г., 04:57
С какими функциями SQL Server «app dev» вы бы сравнивали Access? В частности, какие части SQL Server предоставляют инструменты для создания внешних интерфейсов без посторонней помощи?
 David-W-Fenton02 окт. 2010 г., 01:00
BIDS является частью SQL Server Express? Забавно, его там не было, когда я загружал самую последнюю версию в прошлом месяце, и когда я загружал ее с MSDN сразу после выпуска 2008 R2. Дело в том, что это отдельный продукт, разработанный для использования с SQL Server, а не часть самого SQL Server. Вы можете придираться к этому, но гораздо проще иметь интегрированную среду (попробуйте собрать воедино то, что вам действительно нужно для запуска установки SQL Server Express по сравнению с полным SQL Server, например).

Ответы на вопрос(12)

учае я использую Access для получения данных с нескольких серверов SQL Server, запроса данных, сортировки данных и, наконец, отправки по электронной почте.

Конечно, она не идеальна, но на самом деле ни одна из способных программ не является.

Когда я не собирался быть тем, кто поддерживает это.

Доступ является общим и менее сложным для администрирования, чем SQL Server. Вероятность того, что клиент найдет кого-то, кто мог бы поддержать установку, была выше, и обучение стоит дешевле (в большинстве учреждений высшего образования и в центрах отдыха есть занятия).

в настольном приложении, в котором будет один или небольшое количество пользователей - может ли Access быть лучшим выбором?

Насколько мне известно, Access по-прежнему не является хорошим выбором, когда два или более человека могут обновлять одну и ту же запись в одно и то же время. И в свете бесплатных опций, таких как SQL Server Express или Compact Edition, PostgreSQL или MySQL, это налог для конечных пользователей, которые хотят контроля (хотя они, вероятно, действительно не должны его иметь, из-за денормализованных данных).

когда следует избегать доступа с самого начала?

Когда важность данных признается вместе с влиянием миграции данных.

Помимо бесплатности, я рекомендую SQL Server Express Edition, потому что вы можете перемещаться вверх по версиям в качестве замены. Аналогично для Oracle Express Edition. PostgreSQL будет моей следующей рекомендацией после любого из вышеперечисленного; MySQL отстает в функциональности разработчика и, в отличие от PostgreSQL, может потребовать коммерческой лицензии.

 David-W-Fenton29 сент. 2010 г., 22:54
В многопользовательском Jet / ACE нет ничего плохого. Если у вас проблемы, вы просто не знаете, что делаете.
 NotMe30 сент. 2010 г., 06:07
@ David-W-Fenton: тот факт, что вам «нужно знать, что вы делаете», чтобы избежать таких вещей, как повреждение данных и т. Д. При использовании Access в качестве бэкэнда, в значительной степени решает его судьбу. Мне не нужно беспокоиться о том, не повредит ли добавление новых пользователей моей установке sql server.
 Thomas02 окт. 2010 г., 01:47
@ David-W-Fenton - «бесперебойная работа» - это миры, отличные от «повреждения данных». Если база данных не работает гладко, вы не потеряете данные. Добавление многопользовательского трафика в базу данных Access увеличивает вероятность повреждения. То, что можно даже повредить базу данных (если это не распространено, поскольку в приложении есть инструмент для восстановления поврежденной базы данных), IMO исключает доступ для всего, что вас волнует, чтобы не потерять данные.
 Tony Toews30 сент. 2010 г., 01:08
marc_s. Вы неправы. У меня есть ряд клиентов с 10 и 25 пользователями в базе данных.
 Tom Bushell29 сент. 2010 г., 22:49
Хммм, я думал, что Access сделал какую-то блокировку записи (хотя, насколько я помню, это было очень грубо).
 David-W-Fenton01 окт. 2010 г., 04:59
Вам нужно знать, что вы делаете, чтобы поддерживать работоспособность любого движка базы данных. Добавление пользователей в Access / Jet / ACE не приведет к повреждению ваших данных, так же как секс не заразит вас сифилисом. Только если что-то уже не так, вы рискуете.
 David-W-Fenton02 окт. 2010 г., 23:29
Мой опыт показывает, что многопользовательские приложения Access с поддержкой Jet / ACE не портятся. О, иногда кто-то помечается как подозреваемый, но фактической коррупции нет, только грязный флаг отключения.
 marc_s29 сент. 2010 г., 21:18
+1 Доступ - это кошмар целостности данных ..... более 2, 3 человек одновременно редактируют одну и ту же "базу данных", и повреждение данных обязательно произойдет. Это само по себе было бы убийственным критериемпротив когда-либо, используя Access, по моему мнению
 David-W-Fenton02 окт. 2010 г., 23:30
До прошлого месяца я не видел потери данных из «поврежденной» базы данных Access более 5 лет. В прошлом месяце клиент «потерял» одну запись из-за отключения электроэнергии, которое отключило все рабочие станции одновременно. После восстановления данных (фактически ничего не было потеряно, так как они могли получить всю информацию, которая отсутствовала в той одной записи из бумажных документов). Поскольку это произошло из-за плохой проводки в здании, я увеличил их до SQL Server Express. Если бы они были в здании с современной проводкой, я бы не стал беспокоиться об этом (проблема никогда бы не возникла!).

Когда безопасность не критична.Размер данных может быть сохранен до нескольких сотен мегабайт.Установка и обслуживание SQL Server слишком сложны для пользователя; хотя компактная версия не нуждается в этомВы предпочитаете строить с Access в качестве внешнего интерфейса, и иногда использование других источников данных может иметь ограничения.

Доступ

Предварительно встроенной функциональности достаточно / предпочитаю не изобретать велосипедОдин из самых простых и гибких инструментов отчетности, если у вас нет предвзятого отношения к VBA.Проще дать опытным пользователям возможность создавать специальные запросы и настраивать отчеты.Проще интегрировать с другими продуктами Office.Проще перейти от Excel (Bash Access все, что вы хотите, но когда Excel используется в качестве основного БД ...).Если вы консультант, работающий на месте с пользовательским приложением, Access - отличный выбор. Визуально Studio One Click значительно упрощает распространение и обновление приложений.

Хотя мои критерии могут показаться узкими по объему, я обнаружил, что большинство потребностей бизнеса удовлетворяются. Тебе повезет, если ты останешься в бизнесе, не говоря уже о том, чтобы перерасти Access. Когда большинству предприятий необходимо выйти за пределы Access (команда разработчиков также выросла), их бизнес-правила имеют тенденцию меняться настолько радикально, что в любом случае вы будете переписывать многие приложения, но первоначальное приложение Access выполнит многие из требований.

 David-W-Fenton04 окт. 2010 г., 20:57
@Jeff O: в своем вопросе вы, похоже, предполагаете, что я несу ноутбук на сайт клиента, что не является верным предположением. Действительно, большая часть моей работы на этом сайте (как и во всех других моих установках SQL Server) выполняется через удаленный доступ.
 David-W-Fenton01 окт. 2010 г., 05:01
Какие инструменты обслуживания (резервное копирование, оптимизация и т. Д.) Предоставляет SQL Server Compact?
 JeffO04 окт. 2010 г., 21:57
@ David-W-Fenton - согласен, что является огромным преимуществом, когда у вас есть Access, когда вы захватываете приложение, его устанавливают на большинстве клиентов, в отличие от приложения .NET, которое представляет собой копию набора файлов кода, созданных с помощью «Бог знает, что» версия.
 JeffO01 окт. 2010 г., 14:35
Visual Studio, так же как и все другие версии SQL Server, имеет конструктор для служб синхронизации в ASP.NET и имеет API для полного управления базой данных. используйте резервную копию файла для его резервного копирования / восстановления, автоматическое развертывание CAB для устройств Windows Mobile.
 David-W-Fenton05 окт. 2010 г., 23:19
Я, конечно, мог бы установить свою лицензированную MSDN копию Access на сервере, так как я буду использовать ее для целей разработки, а не для производственного использования. Но это не помогает анализировать связь между Access и SQL Server, который нуждается в профилировщике (есть бесплатные, например,sites.google.com/site/sqlprofiler) чтобы отслеживать, что происходит.
 JeffO04 окт. 2010 г., 15:30
@ David-W-Fenton - как разработчик, вы не можете установить Query Analyzer на свой компьютер, подключиться к клиентской установке SQL Server Express? Как вы анализируете запросы в Access, когда на клиентском компьютере установлена ​​только среда выполнения? Пользователю это не нужно.
 David-W-Fenton03 окт. 2010 г., 20:26
«Зачем кому-то распространять приложение, где пользователю нужен профилировщик?» А? В прошлом месяце я установил SQL Server Express на клиентский сервер, и мне потребовался Profiler для устранения проблем с производительностью.
 JeffO03 окт. 2010 г., 01:00
Зачем кому-то распространять приложение, где пользователю нужен профилировщик? Кроме того, Express - это не то же самое, что компактная версия, для которой не требуется агент резервного копирования. Компактное издание в 10 раз проще в управлении для стороннего приложения, что и было моим главным делом.
 David-W-Fenton02 окт. 2010 г., 01:09
Вы установили SQL Server Express по умолчанию в последнее время? Хотя он включает в себя SSMS, он не включает в себя VS и целый ряд других инструментов (таких как SQL Profiler и Backup Agent), которые поставляются с полным SQL Server, и я бы сказал, что они необходимы для управления, обслуживания и устранения неполадок.
 JeffO06 окт. 2010 г., 15:02
SSMS бесплатна для использования. Это просто происходит в комплекте с установкой SQL Server.
 David-W-Fenton03 окт. 2010 г., 20:26
Чтобы быть справедливым, я сошел с рельсов, переключаясь на вопрос о SQLExpress, когда мой оригинальный вопрос был о компакте.

Я не могу позволить себе цены лицензии MSSQLServer.Программа, которую я буду запускать, - это отдельная программа, работающая на устройстве с низким энергопотреблением (т.е. NETBOOK)База данных нетот важно для моего приложения, я просто хочу небольшой репозиторий для некоторой вторичной информации.Я не хочу, чтобы пользователь устанавливал SQLServer на свой компьютер только для запуска моего приложения.
 OMG Ponies29 сент. 2010 г., 18:03
SS Express Edition это бесплатно - дешевле, чем доступ. Компактное издание больше похоже на Access для функциональности - без аналитики и т. Д.
 David-W-Fenton01 окт. 2010 г., 04:59
Вам не нужен MDAC, если вы собираетесь использовать DAO.
 NotMe30 сент. 2010 г., 06:11
Учитывая, что вам по-прежнему необходимо установить последнюю версию MDAC, чтобы получить обновленный Jet, исправления ошибок и т. Д., Вам все равно придется беспокоиться о распространении / установке.
 Pablo Santa Cruz29 сент. 2010 г., 17:56
@RedFilter: Круто. Не знал, что даже существует. Требуется ли локальная установка? Это бесплатно? Спасибо за ссылку! Читать это ...
 David-W-Fenton29 сент. 2010 г., 22:53
Возможно, дешевле, чем Access, но не дешевле, чем Jet, который поставляется со всеми версиями Windows, начиная с 2000 года. Он также предустановлен, так что вам не придется много беспокоиться о проблемах распространения.
 RedFilter29 сент. 2010 г., 17:54
Для вашей ситуации я бы предпочел SQL Server Compact.microsoft.com/sqlserver/2008/en/us/compact.aspx
 Pablo Santa Cruz29 сент. 2010 г., 17:57
@RedFilter: Неважно. Просто прочитайте ссылку, которую вы отправили. Довольно круто!

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

Нет такой возможности Access, о которой я когда-либо говорил: «Ух, я хотел бы, чтобы это было у меня!»

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

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

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

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

Некоторым разработчикам может быть все равно; Я делаю.

Они не одно и то же!

Однако, возможно, вы спрашиваете, есть ли причины выбирать архитектуру базы данных для совместного использования файлов (например, Jet / ACE) вместо клиент-серверной (например, SQL Server). На мой взгляд, нет веских технических причин, за исключением незначительных случаев весьма тривиального использования однопользовательского рабочего стола. Клиент-сервер значительно превосходит TCO, масштабируемость, управляемость, доступность, безопасность и почти все остальное. По ряду других причин клиент-серверная СУБД лучше соответствует потребностям большинства корпоративных сред.

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

 Tom Bushell29 сент. 2010 г., 22:45
Я думаю, что ваша точка зрения верна - как и многие люди, я склонен объединять разработку приложений, отчетность и компоненты БД в одну вещь, называемую «Доступ». Но качество компонентов приложения, отчетов и т. Д. Может послужить причиной выбора одного над другим - было бы интересно услышать и некоторые сравнения.
 Gennady Vanin Геннадий Ванин01 окт. 2010 г., 06:25
Я не согласен с тем, что Access является инструментом разработки для независимых от продуктов MSOffice. См мойstackoverflow.com/questions/3823314/..., Ваше определение общего доступа к файлам также противоречит моему p.o.v. для меня и имеют довольно ортогональное отношение к инструментам управления базами данных и разработки.

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

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

Сейчас в своей работе я поддерживаю два сайта, каждый из которых находится в отдельных сетях, и их контролируют разные ИТ-отделы. На стороне, над которой я работаю больше всего, нам удалось заставить старый сервер Dell запустить SQL Server 2008R2, жизнь была хорошей, и я начал проект по увеличению размера этих приложений (которые все не связаны) на сервере SQL.

Проходит время, и мы выпускаем новые версии на стороне SQL, пользователи довольны, поскольку время обработки падает с примерно 2 секунд до примерно 0,3 секунд. Также с дополнительной мощностью я могу начать добавлять новые функции.

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

Это почти идеальная ситуация для A / B-тестирования: приложения находятся на грани «необходимости» для увеличения размера, и преимущества доказаны, но доступ по-прежнему работает просто отлично. При тщательном кодировании и достаточно хорошем доступе к файловому серверу можно делать удивительные вещи.

Как еще одно замечание по поводу SQL-сервера, мне пришлось настроить другое отдельное приложение, так как оно использовалось только 5 или около того людьми, которых я придерживался, делая это в access / jet и не касаясь SQL-сервера, все об использовании правильный инструмент для работы. Я часто думаю об этих ИТ-специалистах, которые говорят, что доступ подходит только для одного пользователя и каждый раз настаивают на серверном бэкэнде, как тип людей, которые носят кувалду на тот случай, если им нужно открыть несколько грецких орехов.

 David-W-Fenton01 окт. 2010 г., 05:04
Это только один пример. Не все приложения Access будут работать быстрее при увеличении размера серверной части, если только вы не модернизируете интерфейсную часть, чтобы воспользоваться преимуществами сервера. Большинство приложений будут демонстрировать непредсказуемое сочетание улучшений и падений производительности. Я никогда не был хорош в прогнозировании, которое будет таковым, поскольку ожидаемые потери производительности часто не появляются, а ожидаемые улучшения производительности никогда не осуществляются. Вы не знаете, пока не попробуете, и даже тогда вы точно не узнаете наверняка, пока он не окажется в производственной среде (к сожалению).

что все потенциальные клиенты купили MS Access (MS Office). Можно создавать бесплатные решения на основе SQL-сервера, но не на Access.

Невозможно создать веб-приложение, предназначенное для публичного доступа из Интернета, поскольку в этом случае веб-приложение можно использовать только после проверки того, что пользователь приобрел лицензию MS Access.

Кроме того, MS Access не предназначен для автоматической (неинтерактивной) обработки [1]:

В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любых необслуживаемых, неинтерактивных клиентских приложений или компонентов (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может работать нестабильно и / или или тупик, когда Office работает в этой среде "[1]

Пожалуйста, проверьте перечень проблем в разделе «Проблемы с использованием серверной автоматизации Office» [1].

Обновить
Дэвид-В-Фентон отметил, что среда MsAccess2007 является бесплатной.
Я полагаю, что большинство людей используют (и хотят) MSAccess, в первую очередь потому, что они привыкли использовать Access в качестве клиента (интерфейс GUI), а не из-за серверной части (среды выполнения).

Итак, подведем итоги:
Среда выполнения MsAccess стала бесплатной (хотя большинство ппл используют доступ до 2007 года и не видят никаких веских причин для обновления), но не имеет смысла для участия без присмотра, то есть когда продукты на основе MSAccess предназначены для внутреннего использования (не для продажи и раздача) и уже все равно была куплена.

И MsAccess, как интерфейс / GUI / клиент, когда это имеет смысл для распространения и продажи программных продуктов на основе MsAccess, не является бесплатным.

Разве это не ситуация с уловом-22 (уловом-33?)?

MsAccess (MsOffice) не является AD / IDE (средством разработки или платформой) для разработки независимых программных продуктов и не имеет бесплатных выпусков. Я бы сказал, что платформа вообще не разрабатывается. Средства разработки и функции VBA, MsOffice предназначены в качестве вспомогательных функций только для продуктов конечного пользователя MS (MS Office). Никто не может повторно использовать их без лицензирования / разрешения от их поставщика MS. Их внутренние компоненты и технические характеристики не находятся в общественном достоянии - они частично документированы, изменены без уведомления, не могут быть переделаны / с открытым исходным кодом / повторно реализованы.

Никто не может разработать продукт на основе MSAccess, надеясь распространять, продавать, показывать бесплатные демонстрационные материалы, даже если клиент будет поддерживать их без предварительной покупки лицензии MsAccess.

Update2
Еще в 2002 году я занимался разработкой необслуживаемых приложений backoffice. Требование было поддерживать как Access97, так и Access2000. Я столкнулся с серьезной ошибкой в ​​драйвере Jet, и когда я сообщил об этом MS, ответ был, что он больше не поддерживается. Это был тупик - недокументированная закрытая «платформа» с ошибками и непредсказуемым нестабильным поведением + больше не поддерживается.
Я предполагаю, что это тот же риск для любых более недавних обязательств MsAccess-es.

[1]
Особенности серверной автоматизации Office
http://support.microsoft.com/kb/257757

 David-W-Fenton01 окт. 2010 г., 05:07
Кто-то рекомендовал использовать Jet / ACE в качестве базы данных веб-приложения?
 David-W-Fenton01 окт. 2010 г., 05:06
Ваш первый пункт совершенно не имеет значения, учитывая, что начиная с A2007, среда выполнения Access является бесплатной.
 David-W-Fenton02 окт. 2010 г., 01:11
Существует два важных класса пользователей Access: люди, которые используют его в интерактивном режиме, и люди, которые не дают крысам доступа, но используют приложения, которые работают внутри Access. Эти последние пользователи очень хорошо обслуживаются во время выполнения. И, на мой взгляд, они значительно превосходят по численности других пользователей (когда вы выбрасываете случайных пользователей, которые не пользуются Access в интерактивном режиме каждый месяц или около того).
 Gennady Vanin Геннадий Ванин01 окт. 2010 г., 05:24
@ David-W-Fenton. спасибо, я не знал, я отсталый обитатель на 2003. Хотя, я полагаю, большинство людей используют (и хотят) MSAccess, прежде всего, потому что они привыкли к Доступу как клиенту (интерфейс GUI), а не из-за серверной части (среда). Я не знаю, кто рекомендует, но более часто, чтобы MsAccess использовался в качестве backoffice (сервер)

of it as an ini file on steroids. I need linked tables, but single-user only, and each user wants their own portable mdb file. My main app is a plotting program where the info is different plot setups, each with multiple channels that contain info in sub-tables that must link to the current plot. But, I use commercial engineering software that also stores setups in an mdb file, so my approach is not unique. I know this approach confuses most IT professionals since not the normal business app for a database. Microsoft also seems clueless since they decided SQL Server is better for everything, and trying to mandate that. Currently, I am looking at SQL Compact since I want a single file solution with no PC setup required. JET is fine for me, but Microsoft makes it hard in 64-bit, and requires work-arounds to co-exist w/ Office 32-bit. Sorry if my needs are outside the comfort zone or professional developers.

 Albert D. Kallal10 мая 2016 г., 20:06
The HUGE problem with SQL compact is no support for ODBC. So crystal reports, and a HUGE NUMBER of programs say like Access, or FoxPro, or any ODBC client thus cannot use SQL compact due to no ODBC support. At least JET/ACE has support for ODBC, so "many" applications or in fact any that supports ODBC can thus connect to a ACE database via ODBC, something not possible with SQl compact. The fact that ZERO comments over 5 years of this thread fails to mention no ODBC support suggest no one here actually used SQL compact in a business environment since MOST programs can't connect to SQL compact.

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

С другой стороны

Jet / ACE делает довольно приличное хранилище данных для различных классов приложений

Нет отдельной установки на достаточно актуальную коробку Windows (XP и лучше)Его легко создать (я немного обманываю в .NET, чтобы избежать тонны взаимодействий) и поддерживаю базу данных из кодаЭто один файл - это позволяет легко создавать резервные копии и взять копию базы данных для использования в другом местеЕго набитый полный надлежащей добротой отношений (-:Предполагая копию доступа, тривиально посмотреть на содержимое файла данныхДля однопользовательского настольного приложения это (или, по крайней мере, было) идеальноРаботает довольно хорошо для небольших веб-приложений (да, этоделает - Я запускаю системы с полдюжиной или около того пользователей, которые работают над редактором контента довольно счастливо) и не требует ничего, кроме учетной записи хостинга с поддержкой .NET.И да, если вам нужна общая база данных без сервера, она выполнит свою работу - не хочет быть большим количеством пользователей или большой нагрузки, но она работает.

Итак ... я бы использовал это сейчас? Ну, нет, больше нет - мир движется дальше, и теперь существуют лучшие альтернативы - больше нет компактности и ремонта.

Для однопользовательского настольного приложения я бы использовал SQL CE - во многом то же самое, и теоретически я могу легко перейти на сервер, если он станет многопользовательским настольным приложением.Для веб-приложения я могусейчас (теперь ish?) использовать SQL CE v4, который будет поддерживать одновременные сеансы, чего не было в предыдущих версиях. И я могу перенести это на серверную версию, если / когда мне нужно.Для общей базы данных? SQL Server Express, и если вам не нужен сервер, я не очень хочу работать, спасибо.

Да, программист .NET (-:

что ACE / Jet - это маленький, аккуратный маленький SQL-продукт. Хотя я никогда не думал, что это что-то такое же хорошее, как SQL Server, было несколько вещей, которые ACE / Jet может сделать, чего не может SQL Server: [думает несколько минут ...]CHECK ограничения, которые поддерживают подзапросы и FK с несколькими каскадными путями, например. Такие вещи, которые полезны при создании прототипов без необходимости обходного пути.

Я никогда не выбирал использовать ACE / Jet в производстве. The systems I supported that did use it always suffered from stange problems which almost always went away when manually doing a 'compact and repair', suggesting there was a fundamental flaw with the technology. Oh yes, no doubt we were committing some terrible mistake but we were all competent SQL coders and software engineering generalists, and we didn't seem to be doing anything wrong (we certainly had no interest in investing in an Access specialist). I have heard of hundreds of similar experiences.

One of the big problems I've always had is the lack of good documentation from Microsoft about ACE/Jet. Last time I looked (Access2007) the Access Help contained SQL syntax that did not and has never existed in the product but that was dwarfed by the information that was absent. I have my particular favourites I could bore you with but take something simple and fundamental like data type precedence or decimal rounding behaviour and you will find look in vain in the documentation for such rules. In SQL Server much of the basic rules can be found in the SQL-92 Standard spec but sadly ACE/Jet has never been and never will be SQL-92 compliant.

I no longer use ACE/Jet at all. The things that SQL Server can do using SQL now far, far outweigh the things ACE/Jet can do -- things I can no longer do without included SQL-92 compliance, common table expressions, multi-statement stored procedures, the DATE data type, windowed set functions, the OUTPUT clause, ...so much springs instantly to mind!

SQL Server is a much more dynamic product than ACE/Jet. As an end user, I (feel I) can get involved with shaping its future: I can report bugs and get timely feedback from the development team; I can vote for bug fixes. The SQL Server help (BOL) is excellent and contains Community Content. In comparison, Jet received no new features for almost a decade, then ACE came along with lots of cool features... for SharePoint!! I can't report ACE/Jet bugs (where would I start!) and there would be no hope of getting them fixed anyhow because MS isn't investing in ACE/Jet for end users. I can't even get them to correct blatant errors in the Access Help.

I would suggest the the only cases where ACE/Jet is a better choice than SQL Server is when you have already invested in ACE/Jet and you are not prepared to change. I'm reminded of the Jeremy Clarkson quote, "people carriers are for people who've given up".

 Gennady Vanin Геннадий Ванин01 окт. 2010 г., 15:04
I've read until the "that was dwarfed by the information that was absent" and my hand jumped and upvoted your answer all by itself
 David-W-Fenton02 окт. 2010 г., 01:05
Compact and repair should be part of regular maintenance, just like you optimize and shrink as part of your SQL Server maintenance plan. If you don't include regular backups, and compact and repair as part of your maintenance routine for your Jet/ACE databases, you're falling down on the job just as much as you would be if you ommitted a maintenance plan for a SQL Server (or any other server database). All databases require care and maintenance. Complaining that Jet/ACE does is pretty unfair, and perhaps says more about the complainer than about Jet/ACE itself.
Решение Вопроса

который вы хотели задать, а не тот, который вы на самом деле опубликовали (вы имели в виду Jet / ACE, а не Access).

Да, существует множество сред, в которых Jet / ACE является подходящим хранилищем данных. Я бы сказал, что основная проблема в том, сколько пользователей у вас будет. Jet / ACE подойдет для 15-20 пользователей. Единственные обстоятельства, при которых это не произойдет, это если вы просто не знаете, что делаете. Вы можете не иметь понятия, если:

Вы создаете один монолитный файл MDB / ACCDB с таблицами и формами / отчетами и т. д.

Вы пытаетесь поделиться этим единственным монолитным файлом среди нескольких пользователей.

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

Все эти сценарии являются рецептами для отказа, но виноват не Jet / ACE, а идиот, который никогда не удосужился научиться проектировать и распространять приложение Access.

Еще одна общая характеристика неэффективных приложений Access - привязка форм к полным таблицам, а не к выбранным подмножествам записей. По сути, вы разрабатываете свое приложение так, чтобы одновременно получать минимальный объем данных, чтобы пользователь мог выполнять свою работу. Например, пользователю, редактирующему одну запись, не нужны другие 10000 записей, загружаемых за форму.

Все это говорит о том, что приложение Access с серверной частью Jet / ACE может работать с более чем 15/20 пользователями, если эти пользователи не находятся в режиме ввода / редактирования тяжелых данных. Если в основном пользователи только для чтения, то довольно легко поддерживать до 50 пользователей.

Однако, если бы я был в такой ситуации, я бы, вероятно, начал настаивать на увеличении размера до SQL Server. Но нужно отметить, что SQL Server добавляет значительные административные издержки по сравнению с простым файлом на серверной части. Этими задачами проще автоматизировать полный SQL Server, чем SQL Server Express, поэтому рекомендация использовать SQL Server Express не очень хороша для тех, кто еще не знаком с написанием и планированием собственных сценариев SQLCmd.

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

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

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

Это на самом деле поднимает пару других моментов:

SQL Server может лучше подойти даже для однопользовательского приложения, если одна или несколько из этих проблем значительны:

данные чувствительны и должны быть защищены сверх того, что возможно в Jet / ACE. По сути, если вам нужны данные, защищенные сверх того, что вы могли бы сделать с помощью электронной таблицы Excel, вам необходим серверный механизм базы данных.

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

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

По моему опыту, большинство людей сильно переоценивают свои потребности во всех трех из них и недооценивают способность Jet / ACE обрабатывать данные и поддерживать надежность.

РЕДАКТИРОВАТЬ: сценарий, который для меня является убедительным для доступа.

Допустим, у вас есть офис из 3 человек без файлового сервера, всего 3 компьютера. Не могли бы вы:

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

установить SQL Server на одну одноранговую рабочую станцию ​​и заставить их использовать свои приложения, работающие на этом.

просто используйте Access.

В первых двух случаях требуется гораздо больше обслуживания и администрирования (хотя обслуживание вашего Jet / ACE также требуется). Кто это сделает?

Если вы выберете № 1, где будут собираться деньги для этого сервера и трудозатраты на его настройку, а также трудозатраты на его обслуживание и администрирование с течением времени?

Если вы выберете №2, что если нет рабочей станции, которая была бы достаточно оборудована, чтобы выполнять функции и SQL Server, и рабочей станции?

 David-W-Fenton06 окт. 2010 г., 22:35
... в любом случае, я не знаю, почему я обязан комментировать Compact Edition. Вопрос не в CE, а в Access, поэтому я не вижу причин, по которым лично мне следует обращаться к другому ядру базы данных, которое я никогда не использовал (и никогда не планирую использовать).
 JeffO06 окт. 2010 г., 15:39
ОК, не требует установки базы данных сервера, которая в большинстве случаев является избыточной. Есть ли у вас какие-либо аргументы по поводу Compact Edition? Вам следует.
 EFraim28 апр. 2015 г., 00:49
Хотя ответ технически отвечает на вопрос, я думаю, что нет сценария, в котором автономный механизм доступа (Jet) был бы лучшим решением - есть просто десяток лучших несерверных альтернатив: sqlite, firebird, SQL Server Compact, просто чтобы назвать мало. Ваш ответ, по-видимому, подразумевает, что Jet является адекватным техническим решением, но на самом деле это не так. Отсюда и отрицательный голос.
 David-W-Fenton06 окт. 2010 г., 22:34
Он должен быть установлен, что, если ваши пользователи используют Access, им не нужно ничего устанавливать, чтобы поделиться файлом данных MDB / ACCDB. Это также случай, как Outlook и Outlook Express, где у него есть название, которое очень похоже на продукт, с которым у него мало общего. SQL Server CE происходит не от SQL Server, а от базы данных с тем именем, которое было создано для предшественника Windows Mobile, WinCE. Таким образом, я думаю, что его преимущество значительно переоценено теми, кто считает его вариантом SQL Server, в отличие от совершенно другого механизма базы данных.
 Tom Bushell29 сент. 2010 г., 23:15
«Вы имели в виду Jet / ACE, а не Access». Нет, я не видел мои изменения. Но, как вы и предлагали, этот вопрос необходимо уточнить.
 David-W-Fenton03 окт. 2010 г., 20:23
«Не требует установки базы данных» - что это значит? Почему этот комментарий прилагается к моему ответу, который ничего не говорит о Compact Edition SQL Server?
 JeffO03 окт. 2010 г., 01:14
SQL Server Compact не требует установки базы данных и представляет собой один файл с гораздо большей безопасностью, возможностью размера и идеальным кандидатом для синхронизации с полными версиями SQL Server (сценарий для регионального офиса).

Ваш ответ на вопрос