Слишком длинный запрос слишком часто истекает.Помогите? - PullRequest
0 голосов
/ 08 марта 2011

Вот как должен работать этот конкретный процесс отчетности:

  1. Сценарий VBA указывает файлу Excel обновить свои внешние данные.
  2. Файл Excel извлекает данные из базы данных adhoc Access 2003 (хранящейся в сети), выполняет некоторое форматирование и сохраняет файл на сетевом диске.
  3. Сценарий VBA отправляет его по электронной почте получателям, нуждающимся в данных.

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

  • Удаленный сервер не существует или недоступен
  • Ошибка автоматизации
    Вызванный объект отключился от своих клиентов.

Со временем запросы в базе данных adhoc Access db становились все более и более сложными. Сегодня к одному конкретному запросу было добавлено еще 8 критериев ИЛИ, в которых уже было около 10 из них. В результате, когда я попытался запустить обновленный отчет сегодня, он выдавал ошибки 4 раз перед успешным запуском.

Если бы у меня была возможность, я бы редактировал запросы напрямую и смотрел, смогу ли я улучшить производительность таким образом, но это маловероятно по политическим соображениям / соображениям безопасности. Поэтому я прошу вас, о приятные коллеги-участники StackOverflow, внести предложения, чтобы сделать это более надежным.

1 Ответ

1 голос
/ 08 марта 2011

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

Если возможно, я бы попытался скопировать AccessФайл данных до компьютера, на котором выполняется сценарий, в качестве первой части сценария.

Если вы не можете повторно связать таблицы в Access, вы можете «обмануть» Access с помощью команды subst , чтобы имитировать их обычное сетевое расположение (при условии, конечно, чточто текущая привязка основана на сопоставленных буквах дисков, а не на UNC).

...