首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >突然,Sql Server超时

突然,Sql Server超时
EN

Stack Overflow用户
提问于 2010-05-25 18:02:13
回答 13查看 3.3K关注 0票数 1

我们得到了一个运行了数年的遗留vb.net应用程序,但它昨天突然停止工作,并导致sql server超时。大部分应用程序都会出现超时错误,例如,其中一部分代码如下:

代码语言:javascript
运行
复制
command2 = New SqlCommand("select * from Acc order by AccDate,AccNo,AccSeq", SBSConnection2)
        reader2 = command2.ExecuteReader()
    If reader2.HasRows() Then
        While reader2.Read()
            If IndiAccNo <> reader2("AccNo") Then
                CAccNo = CAccNo + 1
                CAccSeq = 10001
                IndiAccNo = reader2("AccNo")
            Else
                CAccSeq = CAccSeq + 1
           End If
            command3 = New SqlCommand("update Acc Set AccNo=@NewAccNo,AccSeq=@NewAccSeq where AccNo=@AccNo and AccSeq=@AccSeq", SBSConnection3)
            command3.Parameters.Add("@AccNo", SqlDbType.Int).Value = reader2("AccNo")
        command3.Parameters.Add("@AccSeq", SqlDbType.Int).Value = reader2("AccSeq")
          command3.Parameters.Add("@NewAccNo", SqlDbType.Int).Value = CAccNo
        command3.Parameters.Add("@NewAccSeq", SqlDbType.Int).Value = CAccSeq

      command3.ExecuteNonQuery()
    End While
End If

它是有效的,现在在命令3中给出了超时。()有什么想法吗?

代码语言:javascript
运行
复制

在网络上没有任何改变,应用程序使用本地数据库,主要问题是即使在开发环境中,它也不再工作

EN

Stack Overflow用户

发布于 2010-05-25 20:33:07

您可以将更新重写为单个查询。这将比原始查询运行得快得多。

代码语言:javascript
运行
复制
UPDATE subquery
SET AccNo = NewAccNo, AccSeq = NewAccSeq
FROM
    (SELECT AccNo, AccSeq, 
        DENSE_RANK() OVER (PARTITION BY AccNo ORDER BY AccNo) NewAccNo,
        ROW_NUMBER() OVER (PARTITION BY AccNo ORDER BY AccDate, AccSeq)
            + 10000 NewAccSeq
     FROM Acc) subquery
票数 0
EN
查看全部 13 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2903646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档