Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 двойной impesonate, что может быть?  [new]
Egor_M
Member

Откуда:
Сообщений: 61
CREATE PROCEDURE [dbo].[test]
WITH EXECUTE AS '_test'
AS 
BEGIN
	print SUSER_NAME()
	execute ('select 1') as login='_test'
END

go

exec test
go

Выводит
_test
Msg 15406, Level 16, State 1, Procedure test, Line 6
Cannot execute as the server principal because the principal "_test" does not exist, this type of principal cannot be impersonated, or you do not have permission.

Пользователь БД _test привязан к логину _test.
Куда копать?
Если просто под пользователем _test запустить скрипт
execute ('select 1') as login='_test'
, то все отрабатывает. А вот при двойной имперсонализации работать не хочет. Куда копать?
Пример вырожденный. В реальности там разные пользователи. Но не работает даже с одним и тем же. Больее того, не работает даже если процедуру из под _test и запускать.
9 июл 19, 15:00    [21923493]     Ответить | Цитировать Сообщить модератору
 Re: двойной impesonate, что может быть?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6680
Egor_M,

Имхо _test право имперсонализации
9 июл 19, 15:24    [21923507]     Ответить | Цитировать Сообщить модератору
 Re: двойной impesonate, что может быть?  [new]
invm
Member

Откуда: Москва
Сообщений: 8838
Egor_M,

В таком виде не взлетит. Изучайте до полного понимания - http://www.sommarskog.se/grantperm.html
9 июл 19, 18:45    [21923716]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить