up vote 1 down vote favorite
share [g+] share [fb]

I have a single row in a table that seems to be corrupt. It has an identity field called ID, and I can select where ID < 337 or ID > 337, but not ID = 337.

I ran DBCC CHECKTABLE and DBCC CHECKDB on the DB, table and PK index (the only index on the table) and it did not find anything.

I also tried to drop and recreate the index but this execution just hung and never came back after several minutes. Rebuild fails, too, or rather it just hangs.

I've created a new table with all the records except for 337, so I can get it back to almost normal, but I'd like to know if there is anything I should be doing to identify and fix the problem.

Update: I am unable to add a second index to the table on a different field because it times out when I try.

Update2: I'm unable to rename the table, and all these actions show BlkBy -2, which I don't don't recognize.

Thanks!

link|improve this question

78% accept rate
feedback

2 Answers

Have you tried a full backup and restore to a different db?

link|improve this answer
Thanks, Dayton. I've got all but the one record which we can live without from the new table I created. – GernBlandston Mar 9 '10 at 20:09
feedback
up vote 0 down vote accepted

The problem was an orphaned distributed transaction. Here's how I resolved it:

SELECT request_owner_guid FROM sys.dm_tran_locks where request_session_id = -2

KILL '<guid from above select>'
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.