【发布时间】:2011-09-29 02:12:31
【问题描述】:
我有一个 SQL Server 存储过程,它可以创建这样的 TRANSACTION:
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO Table1 ...
INSERT INTO Table2 ...
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
此存储过程将插入到两个单独的表中。如果其中一个失败,它将回滚。
我还有以下创建事务范围的 .net 代码:
using( var scope = new TransactionScope() )
{
SqlCommand cmd1 = connection.CreateCommand();
SqlCommand cmd2 = connection.CreateCommand();
// ...
cmd1.ExecuteNonQuery();
cmd2.ExecuteNonQuery();
scope.Complete();
}
如果我的存储过程和我的代码都在创建事务会发生什么?这会导致问题/需要成为分布式事务还是只要我只创建一个到数据库的连接就可以了吗?
【问题讨论】:
标签: c# .net sql-server transactionscope