代码之家  ›  专栏  ›  技术社区  ›  Stefan

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

  •  3
  • Stefan  · 技术社区  · 17 年前

    我有一个问题,似乎是僵局造成的。 我们现在正在寻找问题的根源,但与此同时,我们想重新启动服务器并让客户继续运行。

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

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

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

    所以我的问题是,为什么在不更改程序中的任何内容的情况下,“SqlConnection不支持并行事务”错误会一次又一次地出现,并且它仍然存在于sql重启之间。

    这似乎发生在程序启动时发出的第一个db请求时。

    如果你需要更多信息,尽管问。我很困惑。..

    更多信息: 我不认为我有“长期”运行的交易。通常的情况是,我有一个20-100行的数据集(ContractRows),我会做一个。更新tableAdapter。我还遍历了这20-100行,对于其中的一些行,我将创建广告挂钩sql查询(例如,如果租用的产品标记为返回,我会创建一个sql查询,将该产品标记为在数据库中返回)

    所以我做的很简单:

    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天3夜优化客户端,以确保我们关闭连接,不要在那里做太多愚蠢的事情。没有运气。

    4 回复  |  直到 17 年前
        1
  •  7
  •   casperOne    17 年前

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

    你的例子似乎支持这一点,因为你没有提到你是如何获得其中的联系的。

    你应该检查一下你的代码,确保你只打开一个连接,然后在完成后处理它(当然,使用using语句确保你关闭了连接),因为你似乎在某个地方留下了一个打开的连接。

        2
  •  2
  •   duffymo    17 年前

    你的问题似乎并不罕见。当我将你的错误字符串粘贴到查询框中时,谷歌发现了很多点击。

    阅读过去的答案,听起来这与不正确地交织事务或隔离级别有关。

    连接保持打开状态多长时间?您有长期运行的事务吗?

        3
  •  2
  •   sfuqua    17 年前

    你有 implicit transactions 在某个地方打开,这样就有一些交易是你没有预料到的?您是否打开了活动监视器,查看是否有任何意外事务?

        4
  •  0
  •   Mark Brittingham    17 年前

    您是否尝试过备份交易日志?如果我能正确地回忆起以前类似的经历,这也可能会让我明白。