Нужна помощь с базой данных Access с интерфейсом и Back-End очень медленно с более чем 1 пользователем

У нас был консультант, установивший базу данных для клиента на основе Access 2007 с внешним интерфейсом (на каждой рабочей станции), и я предполагаю, что серверная часть базы данных (на файловом сервере это контроллер домена 2003 сервера с очень современным оборудованием), память и т.д...).

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

Как только другой пользователь входит в интерфейс базы данных или программу, все медленно замедляется. Клавиши в полях появляются вечно, например, если вы введете слово "найти", то f появится, а через 10 секунд появится "i", затем через 10 секунд "n", затем "d".

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

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

Следует отметить, что в сети нет проблем с подключением кабелей к коммутаторам и другим соединениям. Использование любой из рабочих станций для просмотра файлового сервера и открытия файлов, электронной почты, Интернета и т. Д. Работает очень быстро. Единственное, что перестает работать правильно, это база данных.

4 ответа

Решение

Добро пожаловать в базы данных на основе Microsoft Access и базу данных с общими файлами в целом. К счастью, сегодняшние проблемы в основном связаны со скоростью (в то время как в предыдущих версиях ОС Windows может происходить прямое повреждение данных).

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

Возможно, вам удастся добиться некоторого прироста производительности, поиграв с настройками в "Службе сервера" (LanManServer) на сервере, но вы никогда не увидите такую ​​же производительность для нескольких пользователей, как для однопользовательского.,

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

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

Список преимуществ, которые вы получили бы от использования SQL Server / SQL Express на серверной части, слишком длинен, чтобы их можно было здесь изложить, хотя я подозреваю, что ваш консультант не знаком с ними, поскольку они не удосужились использовать SQL Server. / SQL Express для начала. Вы можете рассмотреть возможность привлечения другого консультанта, если позже решите расширить / улучшить приложение.

Приношу свои извинения за то, что не рассмотрел ошибку сервера для вопросов MS Access.

1) Это хорошо известная проблема с простым решением в сообществе MS Access. Я сомневаюсь в технической компетентности консультанта или разработчика приложения Access, если они не знают о проблеме и решении.

2) См. Страницу часто задаваемых вопросов о производительности, которую я поддерживал примерно с 1997 года или около того. В частности, первая ссылка о блокировке LDB решит проблему со вторым пользователем, замедляющим работу приложения.

Возможно, вы захотите установить SQL Server Express, который является бесплатным и имеет ограничение размера базы данных 10 ГБ - существенно больше, чем Access - на контроллере домена и связать отдельные таблицы с внешним интерфейсом доступа через ODBC. Скорее всего, вы получите намного лучшую производительность для нескольких пользователей, и Access может стать проблемой даже для одного пользователя, как вы сейчас настроили.

Это случилось и со мной. Но я решил эту проблему: 1-создать пустую базу данных. 2- перейти к внешним данным из строки меню. 3- из импорта и ссылки щелкните доступ к импорту. 4- найдите свой бэкэнд и нажмите на него. 5- импортируйте все таблицы на вашем сервере. 6- переименуйте новый бэкэнд в старый бэкэнд. 7- свяжите интерфейс всех пользователей с новым сервером.

100 работ

Другие вопросы по тегам