а если возвращаться к sp_getapplock, то вот я подставляю в него название функции, указываю юзера в роли db_owner, mode указываю exclusive. В другом запросе, параллельно, селект к dm_tran_locks и вижу, что да, название функции пояилось в resource_description, type - application, request_mode = X (LOCK) , request_status= GRANT. Но, при этом, я другим пользователем могу эту функцию селектить, получать результат. Не понимаю, почему так, если есть запись в dm_tran_locks
По-моему sp_getapplock - это не для блокировки объектов метаданных БД, он для применения механизма блокировки к некоторому произвольному текстовому ресурсу, который определяет приложение. Используется, например, для синхронизации потоков приложения. Т. е. чтобы заблокировать кого-то с помощью sp_getapplock, этот кто-то сам тоже должен явно запрашивать блокировку этого же текстового ресурса.