У нас есть процесс, который работал в течение 4 часов. Поскольку он работал так долго, это вызывало другие проблемы в базе данных, поэтому было решено убить процесс.Процесс/SPID блокируется сам по себе, как очистить/убить без перезагрузки сервера Sql
Теперь процесс находится в состоянии ожидания. В нем также указано, что он блокируется сам по себе после запроса sp_who2.
В мониторе активности, здесь информация waitresource:
objectlock lockPartition=0 objid=xxx subresource=FULL dbid=2 id=lockyyyy mode=X associatedObjectid=xxx
Вы заметите, что ObjId и associatedObjectId имеют одинаковое значение.
Выполнение запроса в таблице sys.objects не отображает результаты для этого идентификатора объекта.
Является ли Sql Server ожиданием блокировки объекта, который больше не существует? Как я могу избавиться от этого процесса без перезагрузки Sql Server? (наши администраторы баз данных не отвечают на запросы помощи).
Имейте в виду, что это тестовая среда, но она останавливает все разработки/тестирование, потому что мы не можем развернуть какие-либо изменения в нашей базе данных, поскольку одно из этих изменений влияет на один из объектов, к которым обращался процесс ,
Edit: подробнее от активности монитора: Command = 'УБИЛ/ROLLBACK' ЗАДАЧА ГОСУДАРСТВА = 'SUSPENDED'
DBID 2 - это TempDB, поэтому есть шанс, что чего-то не будет, зависит от того, какой код работает. Что говорит sp_Whoisactive? –
Поскольку это тестовая среда, почему бы просто не перезапустить службу sql? –