Подтвердить что ты не робот

T-SQL: заблокировать таблицу вручную в течение нескольких минут

Я знаю, что это будет странно, но я хочу вызвать ошибку в моем приложении MVC, и эта ошибка будет основана на запросе LINQ Query, где я бы хотел получить одну запись из таблицы. Хотя эта запись будет заблокирована (база данных/таблица/строка) с использованием команд T-SQL (например, бесконечный цикл, всегда обновляющий эту одну запись), тогда мой запрос LINQ будет выполнять запрос для чтения этой записи. Когда LINQ пытается, результат должен быть тайм-аутом через 20-30 секунд, кто-нибудь пробовал это раньше?

4b9b3361

Ответ 1

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

Следующая хранимая процедура должна блокировать вашу таблицу в течение 2 минут. Вы можете изменить параметр задержки в соответствии с вашими потребностями.

BEGIN TRAN  
SELECT 1 FROM TABLE WITH (TABLOCKX)
WAITFOR DELAY '00:02:00' 
ROLLBACK TRAN   
GO 

Общий подход для этого описан ниже в статье stackoverflow. Ссылка MSDN содержит дополнительную информацию о заявлении WAITFOR.

fooobar.com/info/105830/...

Дополнительный пост MSDN

Надеюсь, это поможет.