2009-07-01 2 views
3

Мне нужно проверить некоторый код ASP.NET, который обрабатывает исключения тайм-аута из вызова базы данных MS-SQL.Как я могу вызвать исключение таймаута в базе данных?

Я могу уменьшить свой параметр CommandTimeout в соединении, однако это может привести к ошибкам до моего кода.

Есть ли простой способ заставить базу данных тайм-аут 'on cue'?

ответ

10

Что вы ищите, это команда WAITFOR, время ожидания базы данных в очереди, когда вам будет угодно.

+0

Добавлена ​​задержка ожидания для вызываемого sql. Бит dissapointed Я не могу просто вызвать исключение, когда в sql выполняется определенная clasue. – sre

0

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

0

Ive cheaped это отсоединив мой сетевой кабель лол ...

3

Начните транзакцию в окне студии управления SQL, обновить таблицу, и в этом не совершают:

BEGIN TRAN 
UPDATE table SET ... 

Это будет заблокируйте попытку любого веб-сайта прочитать эту таблицу.

+0

Действительно беспорядочно по сравнению с использованием waitfor –

+0

приятно .. я никогда не видел этого раньше. defn не то, что я уже сделал! :) – russau

+0

К несчастью, я работаю с общей базой данных. Попробуй это в следующий раз, когда у меня будет свой собственный локальный. – sre

1

Не могли бы вы просто выбросить исключение, которое вы хотите, в любой блок try, который хотите протестировать?

-1

Запишите процедуру или запрос, для выполнения которого требуется более 30 секунд, и назовите это из кода asp.net.

0

Начните свой тест, затем выключите сервер базы данных (sc stop «MSSQL $ SQLEXPRESS» или что-то в этом роде).

0

Возможно, вы замените соединение БД на mock, что упростит ваше тестирование.

В этом случае макет будет просто всегда сигнализировать о тайм-ауте.

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