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