c# - SQL Server:如果从 .net 代码中取消,则存储过程中打开的事务的默认操作
问题描述
我正在我的 .net 代码上执行存储过程。存储过程已经开始事务,只有在没有错误时才提交,否则将回滚事务。如果我要从我的 .net 代码中取消存储过程的执行,事务将被提交还是回滚?
解决方案
默认行为是在 proc 代码中启动的事务BEGIN TRAN
将在客户端取消 proc 后保持打开状态。您可以(并且应该)添加SET XACT_ABORT ON
到存储过程,以便 SQL Server 在应用程序取消请求或超时后自动回滚事务。当人们在存储过程中使用显式事务以避免无意中使事务打开的时间超过必要的时间,或者更糟糕的是,在不知情的情况下执行与打开的事务相关的其他工作时,这是一种最佳实践。
不要尝试同时在客户端和服务器上管理事务。选择一个或另一个。
推荐阅读
- django - django-storages 的分段错误(核心转储)
- python - 使用 matplotlib 的混淆矩阵
- javascript - Validate multiple input type="email" using Javascript
- bluetooth - Bluetoothctl - 没有可用的默认控制器
- csv - Apache NiFi:更改 csv 中的日期和时间格式
- java - MediaStore 更新 SQLiteDatabase 错误:表 album_art 没有名为 relative_path 的列
- azure - 如何使用 azure 命令或虚拟机级别标志检查是否在 azure 虚拟机上启用了备份
- php - laravel 如何在 Console\Commands 中调用操作
- r - 如何在 RWeka 中获取分类值?
- angular - 如何使用 AOS inangular 7/8?