Рост проблемы Размера файла Доступа MS

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

Select 
    id,
    licence,
    genericInfo,
    case
    when (select count(*) from genericTable where status = 'DENIED') <= 0 and status = 'SUBMITTED' then
        status
    when (select count(*) from genericTable where status = 'DENIED') > 0  then
        'DENIED - Do stuff'
    end as 'Results'
from genericTable

я вас правильно понял?

7
задан user55886 16 January 2009 в 16:24
поделиться

8 ответов

Необходимо смочь выполнить компактную функцию из кода VBA.

Я имел ниже отрывка, отмеченного от давным-давно, когда я делал работу доступа.

Public Sub CompactDB() 
    CommandBars("Menu Bar").Controls("Tools").Controls("Database utilities").Controls("Compact and repair database...").accDoDefaultAction 
End Sub 

Можно поместить это в код для обхождения его.

Примечание: Вы могли бы также рассмотреть рост к большей системе дб, если у Вас есть эти типы масштабирования проблем.

10
ответ дан 6 December 2019 в 11:53
поделиться

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

Править: Я ожидаю, что Вы понимаете, что это нетривиально для замены базы данных чем-то еще - даже при попытке сохранить то независимо от того, что находится в mdb помимо таблиц. Доступ querydefs уникален, Доступ, SQL нестандартен и Вы были бы в основном начинающие законченный.

Большинство приложений Доступа, которые я видел, имеет большую возможность для рефакторинга; и это обычно не настолько трудно, если a) Вы понимаете логику и бизнес-правила и b) у Вас есть основательное понимание программирования Доступа. Но это было бы более или менее верно для любых альтернатив. На вашем месте и Вы немного коротки в любой области, возможно, можно получить некоторую справку. Но я попытался бы спасти приложение Доступа сначала.

Существует также предложение из другого плаката о перемещении таблиц в один или несколько, присоединил MDBs. Это - твердая, доказанная техника в целом. Но сначала я разобрался бы, какова реальная причина проблемы.

3
ответ дан 6 December 2019 в 11:53
поделиться

Я протолкнул бы данные к MS SQL (постоянные данные и промежуточные таблицы); и можно оставить часть кода в Доступе MS в настоящее время.

Это решает две больших проблемы:

  1. Данные будут по сути более стабильными/надежными (я не могу сказать Вам, сколько раз у меня была поврежденная база данных Access MS).
  2. Ваша база данных Access не будет расти/изменять очень (она должна достигнуть равновесия, после того как весь код в был выполнен и скомпилирован).

Оба из них не означают больше необходимости сжать/восстановить базу данных; можно получить бесплатную версию (Express Edition) MS SQL и не то, чтобы трудно сделать.

2
ответ дан 6 December 2019 в 11:53
поделиться

Если Вы не хотите переключаться на SQL Express или подобный, Вы могли бы вырыть следующие идеи:

  • Откройте другую 'внешнюю' базу данных доступа (mdb файл) для всех временных таблиц, таким образом, Вы могли поместить все временные данные во внешний файл, выбросив mdb файл при закрытии приложения. Вы будете затем управлять в своем коде объектом 'currentDb' и другой базой данных, которую Вы создаете при запуске и соединяетесь с через струю, OLEDB или соединение ODBC
  • Разделите свои постоянные таблицы от Вашего кода и, при необходимости, принесите данные в свой локальный клиентский интерфейс для создания временных таблиц. Это может быть сделано, например, путем соединения внешней базы данных с локальным использованием файла / клиентским использованием файла "DoCmd.transferDatabase acLink". Это может также быть сделано путем соединения с постоянными данными посредством Подключения OLEDB, открытия необходимого recordset (s) и сохранения их локально как XML-файлов. Существует много других решений, которые могут быть реализованы здесь.
1
ответ дан 6 December 2019 в 11:53
поделиться
0
ответ дан 6 December 2019 в 11:53
поделиться

К сожалению, Доступ MS имеет проблемы, когда Вы становитесь слишком крупными - я думаю, что макс. размер составляет 2 ГБ для доступа DB.

Можно рассмотреть перемещение в Sql Express, VistaDB, и т.д.

0
ответ дан 6 December 2019 в 11:53
поделиться

Согласно http://office.microsoft.com/en-us/access/HP051868081033.aspx, Доступ 2003 и 2007 имеют предел на 2 ГБ. Однако легко переместить некоторых или все таблицы в отдельный .mdb файл и затем связаться с теми таблицами. Это - хорошая практика так или иначе, чтобы иметь два файла, один для Ваших данных и один для всех макросов, запросов, и так далее. У Вас могло даже быть несколько файлов, если Ваш файл таблицы добирается около предела на 2 ГБ.

0
ответ дан 6 December 2019 в 11:53
поделиться

Положение дел в отношении размеров файлов Jet для меня бесконечно проблематично.

В настоящее время я просматриваю фрагмент моего собственного кода VBA из базы данных Access A, поскольку он выполняет серию обновлений поля с одной записью с использованием ADO в таблицу в базе данных Access B (через обновляемый запрос ссылка в базе данных A). Единственное поле - это СИМВОЛ (8). После каждых 4 обновлений база данных B увеличивается примерно на 8 Кбайт. Этому нет оправдания. Увеличение размера файла сильно снижает производительность; при каждом росте файла обновление происходит медленно, примерно от одного в секунду (в таблице, содержащей около 30-40 тысяч записей с использованием одиночных SQL-запросов и без каких-либо индексов) до одного в 5-10 секунд. Теперь я признаю , Я сжал / восстановил базу данных B перед запуском этого кода обновления; возможно, если бы я этого не сделал, спектакль не был бы таким плохим. Если бы целевое поле для обновления было, скажем, типа Memo, я бы этого ожидал. Но выполнять обновление поля CHAR () и получить такой результат просто неразумно.

Большая часть вышеперечисленного (без особой критики в адрес какого-либо одного задуманного решения) кажутся действительными решениями для приложений, которые используют относительно постоянную структуру бизнес-приложений (постоянно обращаются к одним и тем же целевым базам данных). У меня не так. . . Я не могу изменить целевую базу данных (база данных B), поскольку она создается и используется инструментом поставщика, который мы используем для экспорта и импорта данных из их приложения.

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

1
ответ дан 6 December 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: