SQL - таблица, ожидающая коммит / откат после закрытия сессии
У меня есть большая таблица без каких-либо индексов, около 27,5 млн строк. Я попытался удалить около половины тех, кто использует BEGIN TRAN
, Затем я попытался отменить запрос, но так как это заняло много времени, я решил просто закрыть Management Studio.
Теперь, когда я пытаюсь заглянуть в эту таблицу, она ничего не возвращает, просто продолжает работать.
Когда я бегу SELECT TOP 10 * FROM Tbl
он просто выполняется, ничего не возвращая.
Но когда я бегу SELECT TOP 10 * FROM Tbl(NOLOCK)
это возвращает 10 строк.
Это говорит мне, что он ждет на Rollback/Commit
от моего BEGIN TRAN
,
Я думал, что он автоматически откатится после закрытия сессии и Management Studio.
Как мне исправить эту проблему?
Благодарю.
2 ответа
Видимо, это сработало:
Прекращение / закрытие соединения с базой данных решит эту проблему. Чтобы закрыть соединение, вы можете попробовать завершить sqlserver.exe из диспетчера задач или монитора активности, если у вас есть Mac.
Выполнить SP: SP_LOCK
В результатах вы получите SPID, DBID, OBJID, INDID, TYPE, RESOURCE, MODE, STATUS
Теперь проверьте столбец состояния, если он показывает ожидание, тоубить этого SPID. Чтобы убить конкретного SPID Выполните SP: Kill 65 (где 65 - SPID)