Хватаемся за соломинку ... Я работаю с настольной системой VB6, использующей несколько баз данных Access в стиле 2003 года (.MDB). Недавно я изменил первую функцию с VB6 на VB.NET, все еще используя базу данных Access. Это больше, чем преобразование, это переписывание с дополнительными функциями. Это по-прежнему довольно простая функциональность с небольшой базой данных. У нас 1400 клиентов, малые предприятия с различным качеством оборудования. Большинство клиентов довольны новым экраном и функциональностью. Очень немногие из этих клиентов испытали КРАЙНУЮ медленную загрузку datagridview. Служба поддержки сообщает нам, что 1) на машинах установлено не менее 1 ГБ ОЗУ и 2) перезагрузка всегда решает проблему.
Я написал приложение, чтобы сильно замедлить работу моей машины, и оно ВСЕ ЕЩЕ работает для меня лучше, чем для тех немногих клиентов. Кроме того, моя база данных Access никогда не удалялась этим приложением.
Какие-либо предложения?
Спасибо!!
В обоих этих магазинах есть несколько машин. Множественные средства от 2 до 4. У них будет возможность обращаться к одной и той же БД, но вряд ли они будут делать это часто. Спасибо за вашу помощь!





Нет, VB.Net отлично работает с Access. ОБЩИЕ среды будут мешать доступ.
Поскольку перезагрузка решает проблему, я бы проверил, правильно ли вы закрываете свои соединения.
Я так не думаю. Обычно необходимо использовать базу данных доступа для 1-10 пользователей в локальной сети. Если пользователи не пользуются им очень часто, все работает нормально. Но такое поведение не «по умолчанию». Требуется некоторый опыт настройки. Но вся информация доступна в Интернете.
Компетентным программистам не составляет труда писать многопользовательские приложения с использованием баз данных Jet для хранилища данных.
Для меня это звучит как большая утечка памяти.
Некоторые клиенты будут оставлять ваше приложение работающим дольше, чем другие, и им будет тяжелее.
Использование Access там, где одновременно работает несколько пользователей, неизбежно причиняет боль.
Использование Access с несколькими пользователями, когда вы некомпетентно программируете приложения с помощью движка базы данных Jet, иногда вызывает боль. Но проблема в НЕСООТВЕТСТВИИ, а не в Access / Jet.
VB.NET (и VB6) не пропускают память. (Тем не менее, вы можете «просачивать» соединения с базой данных).
У нас есть подобный опыт, в большинстве случаев причиной является антивирус. Они ОЧЕНЬ часто проверяют файл (некоторые антивирусы при каждом доступе к файлу).
AV следует отключить для MDB, если вы используете сканирование на основе расширений файлов. Существует только один экземпляр реального вируса доступа в дикой природе, и если все, что у вас есть, это серверная часть MDB, в любом случае не будет никакого кода, запускаемого из этого MDB (поскольку пользователи не открывают его. в Access).
Перезагрузка во время обновления базы данных доступа может привести к ее повреждению.
Вам нужна дополнительная информация, чтобы вы лучше понимали, что происходит. Им необходимо собрать для вас некоторую информацию о рабочей станции, на которой возникла проблема. Используя диспетчер задач, вы можете попросить их получить следующую информацию:
Также можно использовать инструмент командной строки «SYSTEMINFO» как в XP, так и в Vista, чтобы получить общий и доступный объем памяти. Если у вас очень мало доступных ресурсов и на XP, если ваше общее количество транзакций больше, чем ваше общее физическое, вы, скорее всего, меняете местами, и нехватка памяти (или утечка памяти) вызывает ваше замедление.
Суть в том, что вам нужна дополнительная информация. Возможно, проблема связана с другим приложением на рабочей станции. У нас была ситуация, когда в Notes 5.0 возникла проблема, когда, если большая часть окна закрыта другим окном, и вы получили новое почтовое сообщение, загрузка процессора в Notes повысилась до 100%. Это заставляло приложения работать медленно, и если вы не находитесь на рабочей станции и не смотрите на монитор задач, вы никогда не догадаетесь, что проблема была вызвана Notes. Проблема всегда вызывалась в другой программе (той, что на переднем плане). Access также может использовать 100% процессор в разных режимах, даже если кажется, что он ничего не делает.
Соберите как можно больше информации. Возможно, вы захотите написать vbscript или программу, которая будет собирать для вас некоторую информацию, чтобы тот, у кого возникла проблема, мог запустить ее для сбора информации перед перезагрузкой.
Пакетный файл, который выполняет следующие действия, предоставит вам довольно много информации:
@echo off
SystemInfo >c:\systeminfo.log
tasklist /v >>c:\systeminfo.log
хорошая подборка подсказок - спасибо! Я посмотрю, какую информацию они уже могут собрать, и начну с ваших предложений, чтобы узнать больше.
Похоже, в вашем приложении есть утечка памяти. Несколько пользователей обращаются к одной и той же базе данных доступа?