Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Egor_M, Имхо _test право имперсонализации |
9 июл 19, 15:24 [21923507] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9644 |
Egor_M, В таком виде не взлетит. Изучайте до полного понимания - http://www.sommarskog.se/grantperm.html |
9 июл 19, 18:45 [21923716] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |