2010-09-23 3 views
3

Я тестирование обработки ошибок в качестве Access-VBA контролируемого процесса:Как имитировать ошибку тайм-аута ODBC?

  1. скрипта в «контроллере» доступ начинается БД.
  2. Сценарий запускает макрос во втором файле доступа («база данных»).
  3. Макрос в файле 'database' запускает кучу запрошенных запросов.
  4. Эти запросы извлекаются из таблиц, связанных с источником ODBC (на самом деле SQL-Server).

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

Я просмотрел администратор ODBC и расширенные параметры в MS Access, но я не нахожу то, что мне нужно. Идеи?

ответ

2

Открыть макрос в режиме просмотра. В меню «Вид» выберите «Свойства». Должно быть свойство Timeout, установите его на короткое значение и тест.

+0

Хорошая идея, но не работает. Я думаю, что свойство используется только * после * сервер не отвечает. – PowerUser

0

В ваших SQL-запросах добавьте следующий оператор - это должно привести к таймауту.

--waits for 5 mins 
    WaitFor Delay '00:05' 

Или, если вы не хотите, чтобы изменить существующие запросы, вы можете запустить это по одной из таблиц, что макрос запросов. Это будет блокировать таблицу 3 мин

begin transaction 

Select * 
From MyTable with (TABLOCKX) 
--wait for 3 min 
WaitFor Delay '00:03' 

rollback transaction 
+0

Я использую ваш пример транзакции в запросе pass-thru, но он продолжает подспрашивать меня для источника данных. Как включить источник данных в транзакцию? – PowerUser

+0

@PowerUser - Не можете ли вы запустить этот запрос в окне запроса SSMS? Честно говоря, я не слишком много знаю о MS Access. – codingbadger

+0

Извините, но я даже не знаю, что такое окно запросов SSMS. Довольно уверен, что Access этого не имеет. – PowerUser

0

Если ваши запросы изменения, вы можете добавить триггер, который вызывающую WAITFOR. Described here.

1

re: иногда запросы тайм-аут.

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

+0

+1 для хорошей идеи. Но если я это сделаю, мои отчеты будут подкреплены друг другом. – PowerUser

+0

нет, если они называются последовательно в макросе или в коде. зависят ли они от результатов других? – Beth

+0

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

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