将SQL表锁定一段时间

将SQL表锁定一段时间,sql,Sql,我们正在测试我们的新软件,它是基于SQL2005的。 我们想看看当软件在插入/更新期间使用的其中一个表被锁定时,它将如何响应 在SQL2005中有没有一种方法可以模拟这种情况? 这样我们就可以看到如何处理前端的错误了?使用另一个会话 执行开始交易 调用更新表集columnName=columnName 运行您的测试 验证您的结果 提交事务/回滚事务 在SQLServerManagementStudio中,运行此TSQL脚本(将超时设置为适合您的值) 在需要锁定表的交互式连接中打开事务?当表锁定2

我们正在测试我们的新软件,它是基于SQL2005的。 我们想看看当软件在插入/更新期间使用的其中一个表被锁定时,它将如何响应

在SQL2005中有没有一种方法可以模拟这种情况?
这样我们就可以看到如何处理前端的错误了?

使用另一个会话

  • 执行
    开始交易

  • 调用
    更新表集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