У меня есть одна строка в таблице, которая кажется поврежденной. У него есть поле идентификации под названием ID, и я могу выбрать, где ID <337 или ID> 337, но не ID = 337.
Я запустил DBCC CHECKTABLE и DBCC CHECKDB для базы данных, таблицы и индекса PK (единственный индекс в таблице), и ничего не нашел.
Я также попытался отбросить и воссоздать индекс, но это выполнение просто зависло и больше не возвращалось через несколько минут. Перестроить тоже не получается, точнее просто зависает.
Я создал новую таблицу со всеми записями, кроме 337, поэтому я могу вернуть ее почти к нормальному состоянию, но я хотел бы знать, нужно ли что-нибудь сделать, чтобы выявить и исправить проблему.
Обновление: я не могу добавить второй индекс в таблицу в другом поле, потому что он истекает, когда я пытаюсь.
Update2: я не могу переименовать таблицу, и все эти действия показывают BlkBy -2, которого я не узнаю.
Спасибо!
Проблема заключалась в потерянной распределенной транзакции. Вот как я это решил:
SELECT request_owner_guid FROM sys.dm_tran_locks where request_session_id = -2
KILL '<guid from above select>'
Вы пробовали сделать полную резервную копию и восстановить на другую базу данных?