同一个存储过程,查询功能的。在应用程序里调用的时候,偶尔会显示超时,比如查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.   

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

  2.   

    确实情况如你所说,我把存储过程的语句放到外面来,strSql = "...存储过程里的语句...";这样执行起来就不会卡,而直接调用存储过程就会卡,所以初步判断是调用存储过程时出问题,超时。但不知道为什么。整个的调用机制是什么样的呢?这中间有可能出现在问题是什么?