.net - 存储过程级别的 SQL 事务和 SqlConnection 级别的 SQL 事务有什么区别?

标签 .net sql-server ado.net transactions

假设 MSSQL Server 上的存储过程使用 BEGIN TRANSACTION/COMMIT TRANSACTION 使用 SQL 事务,这与通过 SqlConnection.BeginTransaction() 使用 ADO.NET 开始和提交事务有何不同

最佳答案

对于 ADO.NET,没有区别。 MSDN 中隐含地指出,对于 SqlTransaction 对象,Commit 方法被认为“如果事务已在服务器上回滚,则会失败。”

此外,一旦您在连接上执行 .BeginTransaction,SQL Server Profiler 就会显示“SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRAN”。

然而,对于 ADO(不是 .NET)来说,情况并非如此。这曾经允许有效的嵌套事务的良好场景(服务器事务嵌套在客户端事务内)。尽管我经常使用它,但我无法准确定义这种情况下的“客户端事务”是什么。

关于.net - 存储过程级别的 SQL 事务和 SqlConnection 级别的 SQL 事务有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1046061/

相关文章:

c# - 编译器说我没有实现我的接口(interface),但我实现了?

sql-server - 列出 SQL Server 上运行的查询

sql-server - ssis 找不到任何具有 odbc 连接的表

sql-server - 带有左连接的 Top 1

c# - foreach 语句不能对 'getenumerator' 的公共(public)定义类型的变量进行操作

sql - 如何使用内联 SQL 参数化 IN 语句的集合?

c# - 通用类型转换

c# - IDataObject 拖放问题,从 __ComObject 转换

c# - 生成缩略图的最有效方法是什么?

.net - 序列化 .Net SqlTransaction?