我有一个问题似乎是死锁情况的结果.我们现在正在寻找问题的根源,但同时我们想重新启动服务器并让客户继续前进.
现在,每当我们启动程序时,它只是说"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天几天优化客户,以确保我们关闭连接,不要做太多愚蠢的事情那里.没有运气.
看起来您正在共享连接并在同一个开放连接上创建新事务(这是您所看到的异常的并行部分).
您的示例似乎支持这一点,因为您没有提到如何获取其中的连接.
你应该检查你的代码,并确保你只是打开一个连接,然后在完成后处理它(并且通过各种方法,使用using语句来确保你关闭连接),因为它似乎就像你在一个地方留下一个开放.