2011-01-07 202 views
2

我得到以下sql异常: 交易锁定资源与另一个进程死锁,并被选为死锁牺牲品。重新运行交易。在批次结束时检测到不可提交的事务。事务回滚。 我没有任何存储过程中的任何交易,我从.net进行交易,我总是使用它们来调用它们。 你们以前遇到过吗?交易已死锁

回答

3

交易是一个交易,不管从哪里开始。无论是在C#或RDBMS。

您的using问题BEGIN TRANSCATION有效。

MSDN (for SQL Server 2000 but still valid)建议您在检测到死锁时自动重试,而不是在此处编写代码,Google上有许多结果供您阅读。

+0

海事组织MSDN在这方面显然是错误的。如果你只是在没有任何想法的情况下自动重试,你很可能会覆盖别人的变化,也就是说,失去了变化。 – 2011-01-07 19:41:58

0

使用事务时,您需要小心,因为默认情况下它将隔离级别设置为可串行化。当连接释放回池中时,它仍然具有该级别设置。这可能严重损害并发性。