Вручную снять блокировку, созданную sp_getapplock - PullRequest
0 голосов
/ 18 сентября 2018

Итак, наше приложение называется sp_getapplock с автоматически сгенерированным ключом ресурса, и мы зашли в тупик, и приложение остановилось.Есть ли какой-нибудь способ перечислить все блокировки приложений (включая ключ ресурса), сделанные хранимой процедурой sp_getapplock, или, может быть, есть другой способ снять блокировки такого рода, а не перезагрузить БД?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

мы зашли в тупик

Что за тупик?SQL Server должен обнаруживать взаимные блокировки, включающие блокировки приложений и обычные блокировки, и разрешать их обычным образом.

Есть ли способ перечислить все блокировки приложений (включая ключ ресурса), сделанные sp_getapplock

select request_session_id, resource_type, resource_description, request_mode, request_status, request_owner_type
from sys.dm_tran_locks

[есть] другой способ снять блокировку такого рода, а не перезагрузить БД?

Kill () сеанс, удерживающий блокировку.

0 голосов
/ 18 сентября 2018

По документам :

Блокировки, размещенные на ресурсе, связаны либо с текущей транзакцией, либо с текущим сеансом.Блокировки, связанные с текущей транзакцией, снимаются, когда транзакция фиксируется или откатывается.Блокировки, связанные с сеансом, снимаются при выходе из сеанса.Когда сервер по какой-либо причине отключается, все блокировки снимаются.

Вы можете обходить спид-сквош, пока не завершите сеанс и не снимите блокировку.Вы также упомянули взаимоблокировку, поэтому в этом случае вы можете запустить профилировщик и запустить график взаимоблокировок, получить сеанс, убивающий жертв, и убить этот спид.Когда сеанс / транзакция завершена, блокировка должна быть снята.

Что касается устранения неполадок в будущем, запишите информацию о spid, выполняющем блокировку приложения get, зарегистрируйте код возврата / параметры из выполнения proc, и затем вы сможете быстрее устранять неполадки в случае аварии.

Кроме того, я настоятельно рекомендую ставить sp_whoisactive на все экземпляры.Он покажет, кто блокирует все остальные ваши процессы, если они не будут немедленно убиты тупиком.

...