日期:2014-05-17  浏览次数:20384 次

求救,同样一个存储过程,用代码访问,有时会超时,有时不会
同一个存储过程,查询功能的。在应用程序里调用的时候,偶尔会显示超时,比如查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);


------解决方案--------------------
数据库或程序的可能性都有
1、数据库排查,做一个循环,多次或不定时执行该存储过程,记录对应的执行时间,由此可以看看是不是数据库执行该存储过程产生的问题。
2、程序排查,打开数据库的profiler工具跟踪执行sql脚本,执行程序,看看脚本有没有传递到数据库,并且看看程序有没有返回结果。如果程序执行,但profiler上执行脚本没传递过来,很可能是程序或网络传输造成的。

------解决方案--------------------
lz:电脑资源的分配是不定时和不确定的。再说了你还要考虑到网络问题等其它因素。

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

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

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

在此预祝楼主成功。