gpt4 book ai didi

c# - "SqlConnection does not support parallel transactions"什么时候发生?

转载 作者:IT王子 更新时间:2023-10-29 04:21:55 27 4
gpt4 key购买 nike

我有很多相当有效的代码已经在这里好几个月了,今天我看到记录了以下异常:

System.InvalidOperationException
SqlConnection does not support parallel transactions.
at System.Data.SqlClient.SqlInternalConnection.BeginSqlTransaction(
IsolationLevel iso, String transactionName)
at System.Data.SqlClient.SqlConnection.BeginTransaction(
IsolationLevel iso, String transactionName)
at my code here

我想调查为什么抛出这个异常。我已经阅读了 BeginTransaction() 的 MSDN 描述,它只是说,有时会抛出此异常。

这个异常到底是什么意思?我应该查找我的代码中的哪些缺陷?

最佳答案

如果连接已经有一个未提交的事务并且您再次调用 BeginTransaction,您将得到这个。

在这个例子中:

class Program
{
static void Main(string[] args)
{
using (SqlConnection conn = new SqlConnection("Server=.;Database=TestDb;Trusted_Connection=True;"))
{
conn.Open();

using (var tran = conn.BeginTransaction())
{
using (var cmd = new SqlCommand("INSERT INTO TESTTABLE (test) values ('" + DateTime.Now.ToString() + "')", conn))
{
cmd.Transaction = tran;
cmd.ExecuteNonQuery();
}

using (var tran2 = conn.BeginTransaction()) // <-- EXCEPTION HERE
{
using (var cmd = new SqlCommand("INSERT INTO TESTTABLE (test) values ('INSIDE" + DateTime.Now.ToString() + "')", conn))
{
cmd.Transaction = tran2;
cmd.ExecuteNonQuery();
}

tran2.Commit();
}

tran.Commit();
}
}
}
}

...我在第二个 BeginTransaction 中得到完全相同的异常。

确保第一个事务在下一个事务之前提交或回滚。

如果你想要嵌套交易,你可能会找到TransactionScope是前进的方向。

关于c# - "SqlConnection does not support parallel transactions"什么时候发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19559715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com