存储过程在DB碎片整理之前正在运行。成功碎片整理后,其中一个存储过程停止工作(非常慢,没有任何输出)。索引已完成。存储过程做错了什么,只是无法解决它。所有其他存储过程工作正常。知道什么会出错吗?
答案 0 :(得分:0)
尝试为过程中使用的表生成统计信息
update statistics TableName
或索引
update index statistics TableName
update index statistics TableName IndexName
答案 1 :(得分:0)
此外,您可以看到SP中的哪个语句是master..sysprocesses中的问题。
查找运行SP -sysprocesses的进程中有id和dbid,你可以使用object_name(id,dbid)来识别你的,然后你会看到stmtnum和linenum。
获取一个dba或sa_role的人在正在运行的spid上运行sp_showplan - 这将显示查询计划。
如果您根本没有更改任何索引或数据卷,则上述答案必须正确 - 统计信息需要更新。如果这是Sybase 15,您通常应该执行UPDATE INDEX统计信息,否则您很可能会得到一些错误的查询计划(如果您允许MERGE JOIN和HASH JOIN。)