Я создал файл *.mdb (формат файла Access 2002–2003) и добавил в Access (с вкладки «Внешние данные» — Excel) базу данных ODBC. (который я настроил в 32-разрядной версии ODBC DataSource Administrator для указания на сервер базы данных MySQL), используя «Связать с источником данных, создав связанную таблицу».
Я знаю, что файл Access может быть макс. 2 ГБ.
Вопрос:
Спасибо
Поскольку связанные данные не хранятся в Access, это ограничение не применяется.
Однако существуют и другие ограничения, перечисленные в Спецификациях доступа. Например. количество полей в таблице (255) или количество столбцов и байтов в строках, возвращенных в запросе.
@ЭрикА. Это звучит очень удивительно для меня. Что это за ситуации?
В голову не приходит по крайней мере следующее: формы, привязанные к наборам записей типа моментальных снимков, открытие таблиц и нажатие последней кнопки (ссылка), транзакционные запросы, которые невозможно перевести на SQL-сервер (например, слияние в стиле Access запросы через графический интерфейс). Мой личный подход заключается в том, чтобы свести к минимуму использование огромных таблиц либо для VBA и ADODB, либо для отфильтрованных транзитных запросов, которые не будут возвращать> 1 ГБ данных, и убедиться, что компактность при закрытии включена.
Бедный пользователь, которому приходится прокручивать 1 ГБ данных! :-( Я думаю, что этого можно избежать. 1) такой большой БД не означает, что отдельная таблица такая большая. 2) не предоставлять пользователю столько данных (например, использовать фильтры, пейджинг...). 3) использовать хранимые процедуры для обработки огромных объемов данных. В любом случае это будет намного быстрее, чем запросы Access (не сквозные) или код VBA.
Как работает Access или программа на С++ или С# или vb.net для таких больших баз данных? Они ВСЕ одинаковы, и на самом деле действуют одинаково. И в Access нет никакой реальной разницы, скажем, с использованием С++ или С# для извлечения данных с сервера SQL. Если кто-то попытается получить 2 гигабайта данных за один раз, это вполне может привести к возникновению проблемы. Однако в моем ответе ниже я могу «перейти» к концу таблицы из 10 миллионов строк, размер которой, как показывает SQL-сервер, составляет около 3 гигабайт. И, как показывает мой ответ ниже, я могу преобразовать всю большую таблицу в эту форму, но не рекомендуется!!!
Максимальный размер файла Access (*.mdb) составляет 2 ГБ. Связывание таблиц с базой данных MySQL не меняет этого ограничения. Максимальный размер базы данных MySQL зависит от ее конфигурации, но связанная таблица в Access по-прежнему будет ограничена 2 ГБ. Если вы имеете дело с большим объемом данных, рекомендуется разделить базу данных на более мелкие базы данных или рассмотреть возможность использования более надежной системы управления базами данных, такой как Microsoft SQL Server или MySQL.
MS Access не будет знать и не будет заботиться о размере таблицы для связанной таблицы, этот ответ неверен.
Другой ответ правильный, повторять его не нужно.
На самом деле, да, привязка к базе данных, такой как SQL или MySQL? У вас наверняка нет ограничения в 2 гигабайта - даже если ОДНА таблица больше 2 гигабайт - на снимках экрана в моем ответе выше показана форма, которая загрузила 10 миллионов строк. в то время как 10 миллионов строк данных в наши дни «маленькие», эта таблица имеет размер> 2 гигабайта. И обратите внимание, как быстро Access реагирует на открытие этой формы с помощью простого предложения «где» в VBA. Обратите внимание, что форма привязана НЕПОСРЕДСТВЕННО к таблице (без представлений, без хранимой процедуры или чего-либо вообще - но ТОЛЬКО связанная таблица). при открытии этой формы вообще нет заметной задержки.
Как уже отмечалось, поскольку Access больше не является базой данных, таких ограничений не существует.
ДАЖЕ если вы привязываете форму напрямую к связанной таблице, ограничения не существует.
Итак, вот форма, основанная на связанной таблице, и связанная таблица имеет 10 миллионов строк (и SQL-сервер показывает, что размер ОДНОЙ таблицы превышает 2 гигабайта.
Обратите внимание, что скорость также мгновенная, и форма привязана НЕПОСРЕДСТВЕННО к этой связанной таблице с 10 миллионами строк. Нет никаких представлений, никаких хранимых процедур или чего-то еще. Здесь используется простая связанная таблица.
Обратите внимание, как форма с «фильтром» открывается мгновенно, и делает это без какого-либо специального кода, но с «общим» используемым предложением «где» команды открытия формы.
Код кнопки такой:
Private Sub Command5_Click()
DoCmd.OpenForm "frmBigHistory", , , "id = " & Text2
End Sub
Теперь, если я открою эту форму, привязанную к таблице, без фильтра?
Он загружается мгновенно, но если я решу «перейти» к последней записи, тогда произойдет БОЛЬШАЯ сделка, но форма (примерно через 25 секунд) загрузится и загрузит весь набор данных.
Так вот это в действии (форма начинается с загрузки ВСЕХ 10 миллионов наборов данных, и я возвращаюсь к 1-й записи, а затем к последней.
Затем я показываю ту же форму (с 10 миллионами строк), которая запускается с фильтром, и тогда Access ТОЛЬКО извлекает ОДНУ запись с SQL-сервера с приведенным выше примером кода.
Итак, в этом примере база данных больше 2 гигов (около 7 гигов).
И эта одна таблица имеет размер более 2 гигов.
Обратите внимание, что бывают ситуации, когда одна или несколько таблиц полностью кэшируются в базе данных Access, и когда это превышает 2 ГБ, вы столкнетесь с проблемами. Хотя этот ответ в целом верен, использование Access с огромными базами данных по-прежнему является плохой идеей.