|
5 / 5 / 0
Регистрация: 17.04.2018
Сообщений: 25
|
||||||
Подключить >64 *.mdb файлов Access10.03.2022, 16:05. Показов 1560. Ответов 15
Добрый день!
При одновременном открытии большого количества Access-*.mdb-файлов (>64 штук) программа падает с неопознанной ошибкой:
Я понимаю, что это ограничение в самом ядре БД - и VB.NET тут вообще ни при чём. Однако, если написать 2 разных EXE-шника и открыть ими каждый по 64 файла, то итого будет открыто 128 файлов. Т.е., когда речь идёт о разных процесса, то всё работает. Быть может, есть какой-то способ "обмануть" провайдера... Например, запустить подключение в отдельном потоке (пробовал, не помогло), создать какой-нибудь отдельный класс, который при подключении будет создавать какой-нибудь отдельный процесс... В общем, готов выслушать любые идеи Спасибо заранее P.S. где-то здесь обсуждается та же проблема, но решения никто не предложил: https://stackoverflow.com/ques... oft-access
0
|
||||||
| 10.03.2022, 16:05 | |
|
Ответы с готовыми решениями:
15
Access. Копирование с одной базы b1.mdb содержимое в другую базу b2.mdb Access ошибается при создании mdb или сжатии уже созданного mdb Подключить базу данных .mdb к DataGridView |
|
Администратор
|
|
| 10.03.2022, 16:15 | |
|
aaaSashaNGGU, вариант открывать меньше соединений не предлагать? Зачем необходимо одновременно подключаться к такому большому количеству баз?
Добавлено через 4 минуты Нашел вашу старую тему с аналогичной проблемой. Это все та же задача?
0
|
|
|
5 / 5 / 0
Регистрация: 17.04.2018
Сообщений: 25
|
|
| 10.03.2022, 16:17 [ТС] | |
|
К сожалению, да, не предлагать. Так сложилось исторически. Одна БД = один параметр, архивация которого ведётся раз в 10 секунд.
Если программа по очереди открывает-закрывает каждую БД (как оно сейчас и работает), то это очень долго и длится больше, чем 10 секунд... Соответственно, страдает 10-секундный цикл, да и просто жёсткий диск 100% времени в работе, все процессоры загружены всё время на 50%. Бррр.... Если же вначале загрузки программы открыть все БД сразу, то это работает намного-намного быстрее. Если не сказать, что почти мгновенно Да, это моя тема, и всё та же задача ![]() Я всё это время грешил на VB.NET, а недавно наткнулся на StackOverFlow, что дело-то в самом провайдере. Соответственно, появились новые идеи, но пока ничего не помогло
0
|
|
|
Администратор
|
|
| 10.03.2022, 16:35 | |
|
aaaSashaNGGU, было интересное предложение от Jungl использовать связанные таблицы. В таком случае соединение всегда будет ровно одно. Пробовали?
0
|
|
|
5 / 5 / 0
Регистрация: 17.04.2018
Сообщений: 25
|
|||||||||||
| 10.03.2022, 22:06 [ТС] | |||||||||||
|
Слава богу, разобрался, как сделать связанные таблицы. То ещё удовольствие через Access повторять одни и те же действия по 64 раза... Но это, как будто, придётся сделать 1 раз - так что, потерпеть можно.
Но сразу бросается в глаза то, что запрос по записи в общую БД, по сути, делает то, что и было: а именно, происходит открытие БД, запись в неё, а затем закрытие. Конечная БД не остаётся открытой! А, значит, все усилия зря, ведь именно это мне и нужно. Открытая при этом всегда именно основная БД... Делал примерно так (пока только для 3х БД):
0
|
|||||||||||
|
Администратор
|
|
| 10.03.2022, 22:12 | |
|
0
|
|
|
5 / 5 / 0
Регистрация: 17.04.2018
Сообщений: 25
|
|
| 10.03.2022, 22:13 [ТС] | |
|
Вот если бы при открытии основной БД Access открывал бы при этом все связанные БД...
Хотя, не исключено, что при открытии 65 связанных БД , Access сам не упадёт с той же ошибкой, от которой падает VB... У меня есть файл 00.mdb. В нём есть ссылки на файлы 01.mdb, 02.mdb и т.д. до, скажем 99.mdb Открывая в VB 00.mdb появляется файл 00.ldb, что говорит о том, что связь с 00.mdb установлена. Файл лежит рядом с 01.mdb, пока приложение exe не закроет связь. Теперь я пишу в виртуальную таблицу внутри 00.mdb, которая, по сути, находится в 01.mdb. На короткое мгновение появляется файл 01.ldb, а затем пропадает. В 01.mdb появляется новая запись из SQL-запроса. Всё работает, да, но я вижу, что всё работает так же, как и раньше: связь с 01.mdb устанавливается именно на время записи, а потом связь закрывается. Если этих файлов будет 100 штук, то опять всё будет работать очень долго
0
|
|
|
Администратор
|
|||
| 10.03.2022, 22:16 | |||
|
0
|
|||
|
5 / 5 / 0
Регистрация: 17.04.2018
Сообщений: 25
|
||
| 10.03.2022, 22:19 [ТС] | ||
Открывая в VB 00.mdb появляется файл 00.ldb, что говорит о том, что связь с 00.mdb установлена. Файл лежит рядом с 01.mdb, пока приложение exe не закроет связь. Теперь я пишу в виртуальную таблицу внутри 00.mdb, которая, по сути, находится в 01.mdb. На короткое мгновение появляется файл 01.ldb, а затем пропадает. В 01.mdb появляется новая запись из SQL-запроса. Всё работает, да, но я вижу, что всё работает так же, как и раньше: связь с 01.mdb устанавливается именно на время записи, а потом связь закрывается. Если этих файлов будет 100 штук, то опять всё будет работать очень долго Я и так сейчас через код пишу по очереди в эти файлы, поочерёдно открывая и закрывая их. Это долго, с тем и борюсь...
0
|
||
| 10.03.2022, 23:04 | |||
|
Грустно читать тему! С момента возникновения проблемы прошло почти 4 года. За это время тихим сапом можно было переписать часть программ для работы их с единой БД, но ТС упорно создаёт костыли.
1
|
|||
|
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
|
||
| 11.03.2022, 18:21 | ||
|
Не по теме: P.S.: Извините, если что-то из ранее изложенного Вами упустил.
0
|
||
|
5 / 5 / 0
Регистрация: 17.04.2018
Сообщений: 25
|
||
| 11.03.2022, 22:21 [ТС] | ||
0
|
||
|
sleep
4931 / 4592 / 840
Регистрация: 13.04.2015
Сообщений: 9,749
|
|
| 11.03.2022, 22:59 | |
|
2
|
|
|
1723 / 1539 / 165
Регистрация: 25.07.2015
Сообщений: 2,640
|
||
| 12.03.2022, 19:48 | ||
|
Ассess растёт при удалении/перезаписи , т.к. после удаления пустые записи остаются + внутреннее логирование. Сжатие БД решает проблему , но не на долго. Да и допустимый объём не велик -2Гб. Используйте SQLite со множеством таблиц, если уж так хочется всю информацию в БД держать и на файлы, как предлагали выше, аллергия. Объём практически неограничен -измеряется терабайтами, встроенное вакуумирование. По факту ,при ваших задачах, общий размер БД с кучей таблиц будет сильно меньше, чем сейчас ваша одна БД Access, т.к. при одной записи на таблицу потребность в индексировании, что сильно раздувает любую БД , отсутствует. Для примера : БД SQLite с таблицей в 6 полей проиндексированной по 4 и объёмом в 43 млн. записей, занимает 3,3 Гб.
2
|
||
|
5 / 5 / 0
Регистрация: 17.04.2018
Сообщений: 25
|
|
| 09.09.2022, 19:03 [ТС] | |
|
Спустя полгода кодинга я перевёл всё и вся на MSSQL: переделал все проги (около 50 штук) - и теперь мои вышеозвученные проблемы закончились
Всем спасибо за советы и правильный пинок, чтобы уйти от Access раз и навсегда
3
|
|
| 09.09.2022, 19:03 | |
|
Помогаю со студенческими работами здесь
16
Как подключить базу mdb к Excel Не могу подключить базу mdb в Win2000 !!!
Access mdb привязка к железу
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|