<分区>
我知道这会很奇怪,但我想在我的 MVC 应用程序中触发一个错误,这个错误将基于 LINQ 查询,我想从表中获取一条记录。虽然此记录将使用 T-SQL 命令(例如无限循环始终更新此记录)在(数据库/表/行)级别被阻止,但我的 LINQ 查询将执行查询以读取该记录。当 LINQ 尝试时,结果应该是 20-30 秒后超时,以前有人试过吗?
<分区>
我知道这会很奇怪,但我想在我的 MVC 应用程序中触发一个错误,这个错误将基于 LINQ 查询,我想从表中获取一条记录。虽然此记录将使用 T-SQL 命令(例如无限循环始终更新此记录)在(数据库/表/行)级别被阻止,但我的 LINQ 查询将执行查询以读取该记录。当 LINQ 尝试时,结果应该是 20-30 秒后超时,以前有人试过吗?
最佳答案
如果我对您的问题的理解正确,听起来您想强制锁定表以进行测试。要使用 SQL Server 做到这一点,您可以创建并运行一个存储过程,该过程将导致对感兴趣的表进行独占表锁定。当该锁定处于事件状态时,您可以运行要测试的程序。
以下存储过程应将您的表锁定 2 分钟。您可以更改延迟参数以满足您的需要。
BEGIN TRAN
SELECT TOP (1) 1 FROM TABLE WITH (TABLOCKX)
WAITFOR DELAY '00:02:00'
ROLLBACK TRAN
GO
下面的 stackoverflow 帖子中描述了执行此操作的一般方法。 MSDN 链接提供了一些关于 WAITFOR 语句的附加信息。
希望对您有所帮助。
关于c# - T-SQL : Lock a table manually for some minutes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25273157/