SQL Server Express и MS Access

Сотрудник, с которым я недавно работаю, сказал мне, что SQL Express и MS Access по сути являются одним и тем же; что, похоже, не является точным утверждением. Я знаю, что вы можете преобразовать Access в SQL DB, и, возможно, под обложками они похожи, но я бы предположил, что механизм SQL DB и то, что используется для запуска доступа, не совпадают. Не только это, но синтаксис операторов SQL и т.д. Я знаю, не то же самое.

В основном я стараюсь понять, что я более осведомлен о версиях.

Ответы

Ответ 1

Um, нет, не то же самое.

Прежде всего, мне нужно прояснить некоторые термины. MS Access - это инструмент быстрой разработки приложений (RAD), который позволяет быстро создавать формы и отчеты, привязанные к реляционным данным. Он поставляется с файловым движком базы данных (Jet/ACE).

Доступ к инструменту RAD может использоваться со многими различными базами данных (Jet, SQL Server, любой db, поддерживающий ODBC и т.д.). Я должен предположить, что ваш коллега специально комментировал Jet/ACE, то есть механизм базы данных, который использует MS Access.

Я думаю, что самая большая разница между механизмом базы данных Jet/ACE и MS SQL Server Express что Jet/ACE основан на файлах и SQL Server Express использует модель клиент/сервер. Это означает, что для SQL Server Express требуется работающий сервис для обеспечения доступа к хранилищу данных. Это может усложнить развертывание в некоторых сценариях.

SQL Server Express на самом деле представляет собой просто дроссельную версию SQL Server: максимальный размер базы данных 4 ГБ (10 ГБ в 2008 году), используется только один физический процессор и т.д. Эти ограничения налагаются для предотвращения использования крупными организациями доступный экспресс-выпуск вместо полномасштабной установки SQL Server. Результатом этого является то, что SQL Server Express предлагает действительно плавный путь обновления для SQL Server. Это также (вообще говоря) более надежная и полнофункциональная система управления базами данных, а затем Jet/ACE.

Сходства

  • системы управления реляционными базами данных
  • написанный Microsoft

Различия

  • Доступ MS
    • Основанный на файлах
    • свободная распространяемая среда исполнения (2007 или новее)
    • Инструменты RAD (разработчик форм/отчетов)
    • использует Jet SQL
    • максимальный размер файла 2GB
  • SQL Server Express
    • Модель клиент/сервер
    • бесплатно
    • нет инструментов RAD
    • использует Transact-SQL
    • максимальный размер базы данных 4 ГБ (10 ГБ для SSE R2), максимальный физический процессор

Ответ 2

Я думаю, что ваш коллега имел в виду SQL Server CE, который представляет собой сверхлегкую встроенную базу данных, которая по-прежнему (IMO) намного превосходящий Access в аспекте управления базой данных. SQL Express не может сравниться с Access без оскорбления первого.

Ответ 3

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

Доступ: http://office.microsoft.com/en-us/access-help/access-specifications-HP005186808.aspx

SQL (Express указан в крайнем правом столбце): http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx

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

Это две совершенно разные технологии с двумя разными целевыми рынками. Механизмы базы данных действительно разные, поскольку вы упоминаете, что T-SQL отличается от Access SQL.

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

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

Ответ 4

Просто помните, что с MS-Access у вас нет ограничений по размеру, если вы правильно играете в свои карты. Нет причин, например, не иметь много таблиц от 2 до 4 гигабайт, каждый из которых содержится отдельно в своей собственной базе данных. Приложения ODBC могут открывать соединение с несколькими базами данных MS-Access и запрашивать одну таблицу в каждом. Таким образом, вы можете иметь базу данных, содержащую триллионы записей, хранящихся в нескольких файлах MDB. Одна компания, с которой я работала, использовала единую базу данных MS-Access для запуска системы отслеживания проблем, выполняемой в формах MS-Access. Они могли использовать его только один человек за раз, из-за совместного использования проблем, которые блокировали бы MS-Access. Я написал собственный пользовательский интерфейс Windows GUI Win32 Perl для базы данных, который был лучше при проверке поля/записи, и мой код ODBC смог управлять соединением для одновременного доступа пользователей. Мне удалось открыть, прочитать и записать и закрыть базу данных для каждого пользователя через мою программу Perl. Я не оставил базу данных открытой. Я не поддерживал постоянное соединение для каждого пользователя, но вместо этого поддерживал соединение достаточно долго, чтобы получить запись для редактирования. Затем я закрыл соединение, пока не пришло время записать запись в базу данных. Кроме того, я написал свою собственную логику блокировки записи, поддерживая таблицу входа пользователя, содержащую идентификатор записи в записи, которую пользователь в настоящее время редактирует, а затем удалил эту запись, когда больше не редактировал эту запись. Когда другой пользователь отправился редактировать одну и ту же запись, программа проверила, была ли эта запись открыта для редактирования другим пользователем. Система работала безупречно. MS-Access никогда не блокируется через ODBC и многопользовательский доступ. Я даже ввел пароль в базу данных в моей скомпилированной программе Perl, чтобы никто не мог получить данные в базе данных Access, кроме как через мою программу Perl.