奇怪的SQL2005问题。 “SqlConnection不支持并行事务”

时间:2009-01-02 16:24:23

标签: sql transactions

我遇到的问题似乎是死锁情况的结果。 我们现在正在寻找问题的根源,但同时我们想重新启动服务器并让客户继续前进。

现在每次我们启动程序时它只是说“SqlConnection不支持并行事务”。我们没有改变程序,编译和客户服务器上的任何内容,但在“可能的死锁”之后 - 它想要再次上线。

我们有7个客户端(计算机)运行该程序,每个客户端正在与本地服务器上的Web服务进行通信,并且Web服务正在与sql-server(与Web服务器相同的机器)进行通信。

我们已经重新启动了sql-server和iis-server,但没有重新启动服务器,因为服务器上运行了其他重要的服务,所以我们做的最后一件事。 我们可以在管理选项卡中找不到锁或任何东西。

所以我的问题是,为什么“SqlConnection不支持并行事务”错误从一次传递到另一次而不改变程序中的任何内容,它仍然存在于sql-restart之间。

它似乎发生在程序启动时的第一个db-request。

如果您需要更多信息,请询问。我很困惑......

更多信息: 我不认为我有“长期”运行交易。方案通常是我有一个20-100行(ContractRows)的数据集,其中Ill在tableAdapter上执行.Update。我还循环了那些20-100行,对于其中一些我生成ad-hook-sql-querys(例如,如果租用的产品被标记为已返回,我创建一个sql-query来标记产品在数据库中返回)

所以我这样做非常简单:

Create objTransactionObject
Create objtableadapter (objTransactionObject)
for each row in contractDS.contractrows
  if row.isreturned then
    strSQL &= "update product set instock=1 where prodid=" & row.productid & vbcrlf
 End if
next
objtableadapter.update(contractDS)
objData.ExecuteQuery(strSQL, objTransactionObject)    
if succsesfull 
  objtransactionobject.commit
else
  objtransactionobject.rollback
end if
objTran.Dispose()

然后我根据它是否顺利进行提交或回滚。

编辑:没有一个答案解决了这个问题,但我会感谢您在拍摄指针方面遇到的麻烦。

“SqlConnection不支持并行事务”突然消失了,现在sql-server只是“每天下降”4-5次,我想这是一个死锁,但是我没有正确的知识来查找并且是sql专家的简称,他们现在可以为我监控这个。我只是重新启动sql-server,一切都恢复正常。 10次​​中的1次我还必须重新启动计算机。它真的很烦我(当然还有我的客户)。

任何知道一个人良好知识的人在分析瑞典(或世界各地,英语)的死锁或其他sql问题的麻烦时,都可以自由地与我联系。我知道这不是一个联系网站,但我带我的问题,因为我已经用完选项,我花了3天几天优化客户,以确保我们关闭连接,不要做太多愚蠢的事情那里。没有运气。

4 个答案:

答案 0 :(得分:7)

似乎您正在共享连接并在同一个开放连接上创建新事务(这是您所看到的异常的并行部分)。

您的示例似乎支持这一点,因为您没有提及如何获取其中的连接。

您应该检查您的代码,并确保您只是打开一个连接,然后在完成后处理它(并且无论如何,请使用using语句来确保您关闭连接),因为你似乎要在某个地方留下一个开放的地方。

答案 1 :(得分:2)

你的似乎不是一个不寻常的问题。当我将错误字符串粘贴到查询框中时,Google发现了大量点击。

阅读过去的答案,听起来它与交错事务或隔离级别有关。

连接保持打开多长时间?你有长期交易吗?

答案 2 :(得分:2)

你有没有implicit transactions在某个地方开启,所以有些交易你没想到它们?您是否打开了活动监视器以查看是否有任何意外交易?

答案 3 :(得分:0)

您是否尝试过备份事务日志?如果我能够正确地记住以前类似的经历,那么这也可能会清除它。