Okay, here's an interesting story:
During the day, while people were still working, I ran a simple update on a single table which should have affected one column about 1,000 rows. Instead, it crashed with: "Error 3307 Severity 21, Process 27 was expected to hold logical lock on page 2780131."
As it turned out, some investigation showed that 539 rows are now missing! Gone! And, the indexes are corrupt. Okay, no big deal -- I ran checktable and did what the errors told me to do: drop the indexes and rebuild them, then I rebooted the server and all seems fine, except for the missing data. I also have several clean backups, a transaction log, and a full transfer the night before to a secondary server. So, a few hours later, the table is back, indices restored, and the missing data copied from the other server.
Now I'm getting a 2540 when I run checkdb & newalloc on that table. Lots of them. I can only assume that's my missing data rows!
My questions are:
1. How the hell could this happen? I've never seen rows simply deleted from a table like this!
2. What's your recomendation? Should I simply repair the 2540's and move on and assume that the rest of the database is okay if checkdb/newalloc/etc. says it is? Is it??
3. Should I restore from tape and restore the transaction logs?? (now there will be two logs for two days!)
What's your suggestion? I need to be sure that, if dbcc commands say there are no more errors, that it's all clean! Are they accurate? How could this have happened?
Thanks
-Dave