我们得到了一个运行了数年的遗留vb.net应用程序,但它昨天突然停止工作,并导致sql server超时。大部分应用程序都会出现超时错误,例如,其中一部分代码如下:
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中给出了超时。()有什么想法吗?
在网络上没有任何改变,应用程序使用本地数据库,主要问题是即使在开发环境中,它也不再工作
发布于 2010-05-25 19:44:07
我将陈述一个显而易见的事实--有些事情发生了变化。这可能是一次升级没有达到预期的效果--可能是网络组件出了问题--可能是一个闪存盘--可能是很多东西--但访问路径中的某些东西已经发生了变化。您还看到了哪些其他问题指示,包括与此应用程序不直接相关的问题?数据库存储在哪里(本地磁盘,网络存储盒,天使写在针头上,其他)?您的系统管理员是否以某种方式“帮助”或“改进”了事情?代码并没有过时--发生了一些其他事情。
发布于 2010-05-25 19:46:04
有没有可能这个查询随着时间的推移变得越来越慢,现在刚刚超过了默认超时时间?
acc表中有多少条记录,AccNo和AccSeq上有索引吗?另外,您使用的是什么版本的SQL?
发布于 2010-05-25 21:53:22
您多久没有更新统计数据和重建索引了?
您的数据增长了多少?对于小的数据集工作良好的查询可能对大的数据集不好。
你有没有遇到锁定问题?AMJ您是否检查过活动监视器,以查看在超时发生时是否存在锁定?
您是否运行过profiler来获取超时的查询,然后直接在服务器上运行它?那是不是更快了?也可能是将信息从数据库服务器移动到应用程序时出现的网络问题。这至少可以告诉您是SQl服务器问题还是网络问题。
正如Bob Jarvis所说,服务器最近发生了什么变化?数据库结构本身是否发生了变化?是不是有人加了触发器?
https://stackoverflow.com/questions/2903646
复制相似问题