Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用事务回滚进行测试_Sql_Sql Server_Tsql_Testing - Fatal编程技术网

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树根可以很容易地回滚。