Why would I get a message "Retrying row fetch:rowoffset entry n out of range (pg% obj%, db %)" from SQL Server?

Neil Pike

July 27, 1999

1 Min Read
ITPro Today logo

A. You may also see :- "spid % Getrow: rowoffset entry %(%) out of range (pg% obj%, db %)"

This is when SQL Server accesses a row on a page it checks the page header to see where on the page the row is. When this message appears, the page header looks corrupt. SQL Server will transparently retry the read a number of times - if the page is in cache already it will re-read from disk. 

If the page header looks ok on retry then SQL will carry on - otherwise you will get other SQL messages indicating a permanent corruption.

Causes :-

1. Using NOLOCK on select statements. This could cause you to access a page whilst it is being updated/split and this error would occur. On retry the page should be fine.

2. Buffer corruption. Something has stomped over the page in memory - on re-read from disk it looks fine.

3. Duff server memory chip(s). You'll normally see lots of other abnormal behaviour in this situation.

4. Actual corrupt page. Let's hope you have a backup.

Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like