如何在回滚的SqlTransaction实例中重新执行所有命令?

时间:2017-03-20 11:27:43

标签: c# sql .net ado.net sqltransaction

我从ASP.NET应用程序执行多个SQL事务。一个事务一个接一个地执行几个存储过程。交易是非常漫长的。

当我的应用程序的两个实例,即两个不同的进程连接到一个数据库时,我有时会遇到SQL死锁问题。在这种情况下,SQL Server会自动从任何一个进程回滚事务。

发生这种情况时,我想执行已回滚的SqlTransaction中的所有命令(存储过程)。

我怎样才能在C#中做到这一点?

是否有简单的方法可以重新执行SQL事务中所有在SQL服务器回滚事务之前执行的命令?

或者我是否必须编写自己的逻辑来“记住”(并在需要时再次执行它们)我执行的所有存储过程?

1 个答案:

答案 0 :(得分:1)

实际上这是一个不好的做法,因为作为一个开发人员,你需要找到回滚的问题并修复,即使如此我会说声明一个int的标志并在每次sp执行时增加它,当出现问题时抓住你写过回滚的部分只是根据标志调用sps。 这样做是错误的做法