Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 облом с with execute as self - что делаю не так?  [new]
avtorrr
Guest
хочу создать схему, на которую дать юзеру а разрешение на выполнение процедур,
кидать туда процедуры и не давать больше никаких разрешений ни на что.
создаю все под виндовской учеткой, которая на компе админ и на сервере тоже.
вот пробую залезть процедурой еще и в соседнюю базу.
все базы созданы под этой же учеткой и овнеры не менялись.
вот код:


create login a with password = 'a'
use aero
create user a
create schema a
grant execute on schema::a to a

create proc a.usp_test
with execute as self
   select *   
   from trip t join painting.dbo.utQ q on t.ID_comp =q.q_id;

execute as user = 'a'
exec a.usp_test

а почему при выполнении процедуры получаю:
Msg 916, Level 14, State 1, Procedure usp_test, Line 4
The server principal <my_login> is not able to access the database "painting" under the current security context.
???
28 ноя 11, 23:37    [11674774]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
Glory
Member

Откуда:
Сообщений: 104751
avtorrr
все базы созданы под этой же учеткой и овнеры не менялись.

Но crossdatabase ownership chains никто не включал разумеется ?
28 ноя 11, 23:59    [11674832]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
avtorrr
Guest
а чего тогда пишут, что если овнеры у создателя процедуры и всех объектов один и тот же, то это unbroken ownership и права не будут проверять? у меня все овнеры это я и есть
29 ноя 11, 00:01    [11674842]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
Glory
Member

Откуда:
Сообщений: 104751
avtorrr
а чего тогда пишут, что если овнеры у создателя процедуры и всех объектов один и тот же, то это unbroken ownership и права не будут проверять? у меня все овнеры это я и есть

Это пишут про объекты в одной базе, а не в разных
29 ноя 11, 00:04    [11674848]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Кроме того у процедуры a.usp_test и таблицы dbo.utQ разные владельцы
29 ноя 11, 00:05    [11674850]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
avtorrr
Guest
Glory
Кроме того у процедуры a.usp_test и таблицы dbo.utQ разные владельцы

почему бы это. это схемы разные, а у обеих схем овнер та самая виндовская учетка. она же схему-то создавала (a). и если админ создает что-то, он же и попадает в dbo?
29 ноя 11, 00:12    [11674872]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
avtorrr
Guest
у обеих этих схем(a, dbo) в Properties owner записан dbo. картинки вывесить?
29 ноя 11, 00:16    [11674882]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
invm
Member

Откуда: Москва
Сообщений: 9842
1. Владелец объекта не обязательно совпадает с владельцем схемы.
2. Цепочки владения. Читать про межбазовые цепочки владения.
29 ноя 11, 00:20    [11674890]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
avtorrr
Guest
invm
1. Владелец объекта не обязательно совпадает с владельцем схемы.


а подскажите пожалуйста.
у меня чего-то уже полная каша.
смотрю сейчас овнеров в sys.objects,
да, для процедуры записан овнер - схема а.
а у схемы a овнер dbo.
это вообще как???
почему это схема a стала владельцем?
разве создаваемое админом не владеется dbo?
29 ноя 11, 00:26    [11674909]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
avtorrr
Guest
вот где-то было написано, что схема это всего лишь контейнер, неймспейс.
почему схему записывают владельцем?
теперь еще и надо переназначить владельца схеме, чтоб был dbo?
почему по умолчанию не ставится владелец dbo, раз создает админ?
29 ноя 11, 00:30    [11674920]     Ответить | Цитировать Сообщить модератору
 Re: облом с with execute as self - что делаю не так?  [new]
avtorrr
Guest
за
invm
2. Цепочки владения. Читать про межбазовые цепочки владения.

спасибо

было прочитано только:
Когда доступ к объекту производится через цепь, SQL Server сначала сравнивает владельца объекта с владельцем вызывающего объекта. Это предшествующее звено в цепи. Если оба объекта имеют одного владельца, то разрешения для ссылаемого объекта не проверяются.

а про межбазовые цепочки владения только сейчас. понятно, спасибо
29 ноя 11, 00:36    [11674936]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить