远程连接数据库做查询时会出现超时现象,是数据过大的问题?

szit2000 2009-05-13 09:35:07
最近接手修改一个ASP .NET的程序,用的是SQL 2005,但发现其中一个模块要对某个表进行综合查询

该表内有30万+条数据

在WEB上执行查询时,不管是宏查询还是细化查询条件都会返回一个页面错误

此页面发现一个意外错,对此我们非常抱歉。此错误消息已信息了系统管理员,请及时联系我们,我们会及时解决此问题!
错误发生位置: ......
错误消息: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。


如果直接在SQL上查询也会出现执行错误

SQL执行错误
已执行语句:SELECT * FROM B WHERE A = '1'
错误源:Net SqlClient Data Provider
错误信息:已超过了锁请求超时时段

如果用DTS导出数据也会出错。。。。

这究竟是什么状况啊,以前用SQL 2000的时候都没遇到过,现在换这2005就出问题了。。。
...全文
356 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
szit2000 2009-05-14
  • 打赏
  • 举报
回复
谢谢,我先去试试
wantfly2006 2009-05-13
  • 打赏
  • 举报
回复
这个问题不是sql 2005的新问题,sql 2000也一直有的。 因为sql server通过锁机制来保证数据的一致性。所以在默认隔离级别的情况下,sql server上的操作都会对资源加锁,如果出现锁冲突,一方无法拿到该资源的事务就会发生等待,然后当等待时间超过asp.net的query timeout (一般默认30s)就会报timeout错误。

如果你的查询对数据的结果不是用于银行一类的对查询结果很高的应用,解决方法如下
1.在A字段加索引
2.使用nolock hint, 例如
select *
from b with (nolock)
where a = '1'

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧