Sql 使用事务回滚进行测试
我刚刚发现了从Sql 使用事务回滚进行测试,sql,sql-server,tsql,testing,Sql,Sql Server,Tsql,Testing,我刚刚发现了从BEGIN-TRAN-t1ROLLBACK-TRAN-t1对中调用存储过程来测试存储过程的想法。 我对此有点害怕这是常见的做法吗?它可靠吗? 我的目标是快速测试一个存储的进程,它读取和更新两个数据库(同一个服务器)。SP不执行任何截断,而是使用一个表变量与一个插入组合。。输出语句。 音量将很低(受影响的线路少于1000条)。 谢谢有些事情可能会出错: proc可以自己进行事务管理 它可以执行不可事务的语句,如CREATE DATABASE 它可能有错误,导致事务自动回滚。如果pr
BEGIN-TRAN-t1
ROLLBACK-TRAN-t1
对中调用存储过程来测试存储过程的想法。我对此有点害怕这是常见的做法吗?它可靠吗?
我的目标是快速测试一个存储的进程,它读取和更新两个数据库(同一个服务器)。SP不执行任何截断,而是使用一个表变量与一个
插入组合。。输出
语句。音量将很低(受影响的线路少于1000条)。
谢谢有些事情可能会出错:
- proc可以自己进行事务管理
- 它可以执行不可事务的语句,如
CREATE DATABASE
- 它可能有错误,导致事务自动回滚。如果proc继续以某种方式运行,它可能会在事务之外编写内容
- 可能使用不一致,导致前面提到的效果
顺便说一句,Truncate是事务性的。我经常这样做,从来没有遇到过问题。@JohnD:谢谢。我只是“打折”了一下,就目前而言,这看起来是一个很好的省时方法,是的。它只是表明存储过程不会抛出错误。这并不表明他们做了正确的事情。如果他们什么也不做,他们就会通过这些测试。因为有一个神话,truncate表不能滚动,所以truncate的投票结果为+1back@jean所以我才这么说。我不知道这个神话是从哪里来的。DROP表也被处理。TRUNCATE所做的就是将b树根设置为空页,并在提交时取消分配其余的。b树根可以很容易地回滚。