Я знаю, что это будет странно, но я хочу вызвать ошибку в моем приложении MVC, и эта ошибка будет основана на запросе LINQ Query, где я бы хотел получить одну запись из таблицы. Хотя эта запись будет заблокирована (база данных/таблица/строка) с использованием команд T-SQL (например, бесконечный цикл, всегда обновляющий эту одну запись), тогда мой запрос LINQ будет выполнять запрос для чтения этой записи. Когда LINQ пытается, результат должен быть тайм-аутом через 20-30 секунд, кто-нибудь пробовал это раньше?
T-SQL: заблокировать таблицу вручную в течение нескольких минут
Ответ 1
Если я правильно понимаю ваш вопрос, похоже, вы хотите принудительно заблокировать таблицу для целей тестирования. Чтобы сделать это с помощью SQL Server, вы можете создать и запустить хранимую процедуру, которая приведет к исключительной блокировке таблицы в интересующей таблице. Пока эта блокировка активна, вы можете запустить программу, которую хотите протестировать.
Следующая хранимая процедура должна блокировать вашу таблицу в течение 2 минут. Вы можете изменить параметр задержки в соответствии с вашими потребностями.
BEGIN TRAN
SELECT 1 FROM TABLE WITH (TABLOCKX)
WAITFOR DELAY '00:02:00'
ROLLBACK TRAN
GO
Общий подход для этого описан ниже в статье stackoverflow. Ссылка MSDN содержит дополнительную информацию о заявлении WAITFOR.
Надеюсь, это поможет.