【发布时间】:2017-03-20 11:27:42
【问题描述】:
我从我的 ASP.NET 应用程序执行几个 SQL 事务。一个事务一个接一个地执行多个存储过程。交易是相当长时间运行的。
当我的应用程序的两个实例(即两个不同的进程)连接到一个数据库时,我有时会遇到 SQL 死锁问题。在这种情况下,SQL Server 会自动从任何一个进程回滚事务。
发生这种情况时,我想执行回滚的SqlTransaction 中的所有命令(存储过程)。
如何在 C# 中做到这一点?
是否有简单的方法可以重新执行 SQL 服务器回滚之前执行的 SQL 事务中的所有命令?
或者我是否必须编写自己的逻辑来“记住”(并在需要时再次执行)我执行过的所有存储过程?
【问题讨论】:
-
您必须在用户代码中重试。所以你最后关于“自己的逻辑”的说法是正确的。
标签: c# sql .net ado.net sqltransaction