I am getting an error (“Could not do a physical-order read to fetch next row” #244) while executing a job that runs a set of SQL statements every 30 minutes. When we stop the job and run it again after a few minutes, it runs fine. So I don’t think it is a corrupted index file problem, as the book describes it.
What else could cause this error?
This is a concurrency problem. When one of the jobs is running, it is locking a resource that the other job needs. I suspect that either each job or occasional jobs are taking longer than 30 minutes to run. It may be getting locked up, waiting for resources, or just doing a lot of work. I’ll bet if you schedule the jobs 45 minutes or an hour apart, the problem will go away for a while.
The real fix is either to modify the code of the jobs to minimize the amount of locking the job does or to alter the table structure if that is causing the problem. But your first job is to find out what is being locked. I’ll bet it’s an index of some sort.