2010-02-22 6 views
1

Что хорошего в Excel для проверки скорости сетевого подключения к сетевому диску, на котором хранится мой проект excel?VBA: скорость подключения сетевого накопителя

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

Я думаю, что было бы лучше попытаться написать макрос, который измеряет скорость соединения до места выполнения листа excel, а затем, если он ниже определенного порога, у меня будет какое-то предупреждающее сообщение пользователь должен загрузить копию локально.

Любые рекомендации, как я могу это сделать?

Спасибо, Dan

Моя единственная идея до сих пор для вывода 10000 повторных символов в случайно имя файла в ActiveWorkbook.Path затем удалить его. На основе функции Now() до и после этой операции я могу оценить скорость соединения. У этого есть много потенциальных проблем ... полный привод, права на запись, баланс между временем выполнения и точностью.

+0

Загружает ли локальная копия определенная проблема скорости для пострадавших офисов? – barrowc

+0

Да. Бэкэнд доступа составляет 800 МБ, и он использует все таблицы в базе данных, поэтому требуется большая скорость. – Dan

ответ

0

Попробуйте записать фиксированное количество символов в тот же каталог, книга хранится (Workbook.Path). Сделайте это в цикле for и повторите его так, чтобы было записано 10 000 символов (или любой другой номер, который вы выберете). Делайте временную инструкцию до и после. Выясните, где соответствующее отрезание находится в секундах и отображает сообщение для тех, кто занимает больше времени, чем время отсечки.

2

Я подозреваю, что проблема заключается не в приложении Excel как таковом. Является ли это xls или xla, файл загружается в ОЗУ на клиентской машине. Проблема состоит в том, что горилла Access достигает 800 фунтов.

Как вам известно, Access не является базой данных клиент-сервер, независимо от того, что MDB может находиться на файловом сервере. Когда вы запускаете запрос (будь то SQL или QueryDef) от клиента, все данные, требуемые в запросе, передаются клиенту. Это контрастирует с реальной клиент-серверной базой данных (думаю, SQL Server или Oracle), где запрос разрешен на сервере и только результаты, возвращенные клиенту.

Некоторые предложения:

1) Запишите время до и после выполнений запросов и записать результаты в центральном текстовом файле. Это служит только для определения самых медленных запросов. Сначала исправите его худших преступников.

2) Используя копию MDB, поэкспериментируйте с индексацией таблицы. Посмотрите, какие не уникальные поля используются в предложениях. Сократите количество соединений, сколько сможете.

3) Если это в основном инструмент отчетности, можете ли вы денормализовать таблицы? Доступ плохо страдает от проблем с глубиной работы таблицы.

4) Можете ли вы кэшировать данные локально? Если одно решение я разрешил пользователям выбирать, какие данные они требуются (обычно это часть всего), а затем кэшировать их на своем диске C :. Последующие запросы были выполнены против локальных данных.

5) Вы используете общую книгу? Избегайте этого, если это возможно.

6) Поговорите со своими пользователями. Узнайте, что они находят медленными. Когда. Какие действия они предпринимали.

Все лучшее

+0

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

Смежные вопросы