Документация довольно ясна по этому вопросу:
Блокировки, размещенные на ресурсе, связаны либо с текущей транзакцией, либо с текущим сеансом. Блокировки, связанные с текущей транзакцией, снимаются, когда транзакция фиксируется или откатывается. Блокировки, связанные с сеансом, снимаются при выходе из сеанса. Когда сервер по какой-либо причине отключается, все блокировки снимаются.
Апплоды аналогичны критическим разделам - основная причина их существования заключается в том, что другие потоки не могут просто переопределить их, если у них нет привилегий для уничтожения процесса, удерживающего блокировку.
Рассматривали ли вы использование какой-либо формы оптимистического параллелизма вместо этого? Предполагается, что блокировки выполняются менее чем за секунду, то есть во время обычной транзакции. Именно по этой причине обычно не стоит держать его в течение нескольких минут (или часов).
Если вам нужно использовать applocks таким образом, и вы не можете использовать оптимистичный параллелизм, тогда я считаю, что ваш единственный выход - убить спида, которому принадлежит блокировка.
Если вы не хотите давать пользователю привилегии sysadmin, вы можете создать хранимую процедуру, чтобы убить процесс WITH EXECUTE AS <admin_user>
... разумеется, имея в виду, что это открывает довольно широкую дыру в безопасности, поэтому будьте очень осторожны с теми, кому вы предоставляете разрешения на выполнение.