Устранение неполадок MS-Access на медленной файловой системе Windows?
У нас есть БД MS-Access на файловом ресурсе. Мы получаем низкую производительность и сообщения об ошибках, которые, как мы подозреваем, связаны с таким медленным доступом к файлам. Что бы первым делом проверить, что такое горлышко бутылки?
Локально работает, поэтому мы уверены, что это не само приложение.
4 ответа
Вы можете выполнить "быстрый и грязный" тест на пропускную способность файлового сервера, создав большой временный файл на сервере с помощью команды fsutil, а затем синхронизировав передачу на клиентский компьютер:
fsutil file createnew temp-file-name 209715200
Это создаст 200 МБ временного файла. Вы можете выполнить быстрое копирование с указанием времени, используя следующий скрипт (из каталога, в котором вы создали временный файл на сервере, и при условии, что у вас есть права на подключение к общему ресурсу "C$" клиентского компьютера):
@echo off
echo.|time
copy temp-file-name \\remote-computer-name\c$
echo.|time
Вычтите время окончания из времени начала, конвертируйте в секунды и разделите 209715200 на количество прошедших секунд, чтобы получить число байтов в секунду.
Вы должны увидеть более 7 000 000 байтов в секунду (примерно 56 Мбит / с) в локальной сети 100Base-TX. Что-нибудь ниже этого, и я бы начал подозревать, что что-то не так. Предполагая, что сервер достаточно современный, он должен быть в состоянии заполнить канал 100 Мбит / с без проблем. Если вы видите скорость передачи ниже, чем я, я бы начал смотреть на счетчики ошибок в интерфейсе администрирования коммутатора, к которому подключены сервер и клиент. У вас могут быть неисправные кабели, несоответствие дуплексного режима или проблемы с драйвером сетевого адаптера. Это всего лишь вопрос методического выявления проблемы.
См. Страницу часто задаваемых вопросов о производительности доступа.
Попробуйте сделать имя файла короче и полный путь короче. Звучит странно, но верно в некоторых настройках. Смотрите этот KB.
Также можно убедиться, что подпись SMB отключена (HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Para meters\enablesecuritysignature, установленной в 0) как на сервере, так и на рабочей станции (см. Эту ветку).
Существует также несколько странная проблема, связанная с блокировкой LDB, которую вы можете проверить. Смотрите эту страницу.
Несколько других вещей, которые нужно попробовать, - это сжать саму базу данных (я полагаю, в Access все еще есть эта функция) и выполнить дефрагментацию фактического файла базы данных на компьютере, выполняющем общий доступ. Для дефрагментации отдельных файлов я рекомендую утилиту командной строки sysinternals contig.
Вы также можете проверить наличие плохой сети, запустив ping в течение продолжительного времени (я считаю, "ping -t" - правильное заклинание Windows для команды), и посмотрев, отбрасываете ли вы пакеты или видите большую задержку в сети.