前台系统报错“the remote procedure call was canceled”,调查发现是执行一个大批量数据查询的存储过程时超时了。切换windows cluster后,问题消失了。以上问题出现并无规律,由于是生产环境,所以每次出现这个错误时客户的操作人员都会第一时间切换cluster。
  经过查看存储过程发现确实有优化的地方。但是我的疑问是:为什么一样的数据,一样的查询条件,切换cluster后SP的执行速度极大的提升了。我想到的最大可能是发生错误前sql server采用了一个“坏”的执行计划,而切换cluster后,由于sql server清除了所有缓存,根据统计信息生成了一个“好”的执行计划。
  我的推论正确么,是因为切换cluster前后sql server的统计信息不同而导致的么?是否还存在其他可能?出现这种问题该如何准确定位及解决呢?

解决方案 »

  1.   

    the remote procedure call was canceled远程存储过程执行被取消?是不是远程连接出了问题?
      

  2.   

    如果是统计信息的问题你可以通过sp sp_updatestats 或者 UPDATE STATISTICS 来更新。
    具体看联机帮助。
      

  3.   

    MSSQL的集群还不如镜像方便,也不能提高性能。
      

  4.   

    参考:http://blog.csdn.net/zhupt/archive/2009/02/09/3870195.aspx
    ‘执行存储过程超时 SQL ’