将SQL表锁定一段时间
我们正在测试我们的新软件,它是基于SQL2005的。 我们想看看当软件在插入/更新期间使用的其中一个表被锁定时,它将如何响应 在SQL2005中有没有一种方法可以模拟这种情况?将SQL表锁定一段时间,sql,Sql,我们正在测试我们的新软件,它是基于SQL2005的。 我们想看看当软件在插入/更新期间使用的其中一个表被锁定时,它将如何响应 在SQL2005中有没有一种方法可以模拟这种情况? 这样我们就可以看到如何处理前端的错误了?使用另一个会话 执行开始交易 调用更新表集columnName=columnName 运行您的测试 验证您的结果 提交事务/回滚事务 在SQLServerManagementStudio中,运行此TSQL脚本(将超时设置为适合您的值) 在需要锁定表的交互式连接中打开事务?当表锁定2
这样我们就可以看到如何处理前端的错误了?使用另一个会话
开始交易
更新表集columnName=columnName
提交事务/回滚事务
在SQLServerManagementStudio中,运行此TSQL脚本(将超时设置为适合您的值)
在需要锁定表的交互式连接中打开事务?当表锁定2分钟时,任何其他事务将等待2分钟,或者它们将立即引发错误?这取决于在发出正在等待的查询的连接/命令上设置的超时。
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
BEGIN TRANSACTION
UPDATE table
SET ColumnName = ColumnName
WAITFOR DELAY '00:02:00' -- 2 minutes hh:mm:ss
-- Run your test while table is locked and delay is counting down
ROLLBACK TRANSACTION