У меня есть пользователь, которому я предоставил доступ к учетным данным, используя:
GRANT ALTER ANY CREDENTIAL TO userA
Когда я вхожу в систему с этим пользователем, следующее возвращает мне данные
SELECT * FROM sys.credentials
Я вижу что у меня есть разрешение на уровне SERVER. Это можно проверить, выполнив
SELECT * FROM fn_my_permissions (NULL, 'SERVER')
Используя другого пользователя, скажем, userB, я дал олицетворение userA, выполнив
GRANT IMPERSONATE ON USER::userA TO userB
В хранимой процедуре, во время входа в систему как userB, я переключить контекст на userA
EXECUTE AS user = 'userA'
SELECT user_name() AS ContextUserName
SELECT * FROM fn_my_permissions (NULL, 'SERVER')
SELECT * FROM sys.credentials
SELECT * FROM fn_my_permissions (NULL, 'SERVER')
не возвращает мне разрешения ALTER ANY CREDENTIAL. SELECT * FROM sys.credentials
не возвращает мне никаких значений. SELECT user_name()
возвращает мне userA однако.
Есть что-то, что я здесь пропустил? Почему я не могу вести себя как userA и получать данные из sys.credentials?
Спасибо!