我有一个调用 web 服务方法的 Winforms 应用程序
webservice 方法启动一个长时间运行的事务(不幸的是,有很多小命令而不是一个长时间运行的命令。)
据我所知,如果 webservice 调用超时,webservice 方法中的事务将继续运行并完成。我希望发生的事情是当 web 服务超时时事务回滚。这可能吗?
我有一个调用 web 服务方法的 Winforms 应用程序
webservice 方法启动一个长时间运行的事务(不幸的是,有很多小命令而不是一个长时间运行的命令。)
据我所知,如果 webservice 调用超时,webservice 方法中的事务将继续运行并完成。我希望发生的事情是当 web 服务超时时事务回滚。这可能吗?
恢复一个旧线程,但我遇到了同样的问题,所以我想我会为遇到它的其他人更新这个。我发现的最佳解决方案是使用 XACT_ABORT 即插入
SET XACT_ABORT ON
在您的交易开始时。这将强制回滚任何类型的客户端错误(因此您的事务将不会继续运行和完成,它只会回滚)。在 dba stackexchange 中有一个非常好的讨论:
https://dba.stackexchange.com/questions/10912/sql-server-transaction-timeout