求救,同样一个存储过程,用代码访问,有时会超时,有时不会

qiming2021 2012-04-23 05:40:16
同一个存储过程,查询功能的。在应用程序里调用的时候,偶尔会显示超时,比如查100次,可能就二,三次会提示超时,其它都正常,当提示超时时,别的机子的程序调用这个过程时,也会超时,就是说,用这个过程的都会超时了,调用的语句放到查询分析器里执行,可以正常显示结果,代码调用就是会显示超时。
这是什么原因啊,一直没办法解决,只是偶尔会超时。有怀疑过网络,但不好排查。想看看是不是代码的问题。
代码调用很简单:
string strSql = string.Format(" exec P_App_Progress_List '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}' ",
strAppCode, strCustCode, strFinishDateS, strFinishDateE, strDingDanBianHao, strZhiZhaoChangJia, strYangPinMingCheng, strContactName, strUserId);
...全文
86 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qiming2021 2012-04-27
[Quote=引用 2 楼 的回复:]
lz:电脑资源的分配是不定时和不确定的。再说了你还要考虑到网络问题等其它因素。

如果说存储过程里面大量使用临时表或者是返回一个大表时都很费资源的。

存储过程虽不用再次编译,但是你的参数有很多,要经过周转才运行。有时候会卡也说不准的。

所以呢存储过程的操作尽量要简单,也不要很长啦。直接分开调整也很快的。

在此预祝楼主成功。
[/Quote]
确实情况如你所说,我把存储过程的语句放到外面来,strSql = "...存储过程里的语句...";这样执行起来就不会卡,而直接调用存储过程就会卡,所以初步判断是调用存储过程时出问题,超时。但不知道为什么。整个的调用机制是什么样的呢?这中间有可能出现在问题是什么?
回复
了解 2012-04-24
lz:电脑资源的分配是不定时和不确定的。再说了你还要考虑到网络问题等其它因素。

如果说存储过程里面大量使用临时表或者是返回一个大表时都很费资源的。

存储过程虽不用再次编译,但是你的参数有很多,要经过周转才运行。有时候会卡也说不准的。

所以呢存储过程的操作尽量要简单,也不要很长啦。直接分开调整也很快的。

在此预祝楼主成功。
回复
simonxt 2012-04-23
数据库或程序的可能性都有
1、数据库排查,做一个循环,多次或不定时执行该存储过程,记录对应的执行时间,由此可以看看是不是数据库执行该存储过程产生的问题。
2、程序排查,打开数据库的profiler工具跟踪执行sql脚本,执行程序,看看脚本有没有传递到数据库,并且看看程序有没有返回结果。如果程序执行,但profiler上执行脚本没传递过来,很可能是程序或网络传输造成的。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2012-04-23 05:40
社区公告
暂无公告