c# - T-SQL : Lock a table manually for some minutes

标签 c# sql-server database linq locking

<分区>

我知道这会很奇怪,但我想在我的 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 语句的附加信息。

Original stackoverflow post

Supplementary MSDN post

希望对您有所帮助。

关于c# - T-SQL : Lock a table manually for some minutes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25273157/

相关文章:

c# - 编号 - 二维数组中的算法 - "assign occurrence of a letter"- 在 c# 中

c# - 如何部署 visual studio 自定义工具?

sql-server - 如何创建一系列月份来加入稀疏数据?

php - 外来字符在mysql中变成垃圾

java - 将百万条记录从 MEMORY 表移动到 MYISAM 表

c# - 并发跳表读锁定

c# - 内存溢出问题-OpenCV

sql - 转换为 float : CAST vs CONVERT vs *1. 0

Sql服务器[内容]命名列奇怪的行为?

sql - 将合并替换为 case