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

Есть в базе пользователь polz, есть таблица deal. права на update у пользователя явно отозваны
revoke update on deal from polz

выполняем код под polz
update deal set comment = 'test' where id = 10000979420
получаем ошибку
The UPDATE permission was denied on the object 'Deal', database 'testdb', schema 'dbo'

далее, под sa создаем процедуру
create procedure uspUpdateDealComment
	 @p_nID		int
	,@p_vchNewComm	varchar(200)
with execute as  caller
as
begin
set nocount on
  update Deal set comment = @p_vchNewComm where ID = @p_nID
end

вызываем процедуру под пользователем polz
exec dbo.uspUpdateDealComment 10000979420,'testZ1am'

Итог - значение в столбце обновилось? Но почему??

@@version - Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
15 окт 09, 12:54    [7790410]     Ответить | Цитировать Сообщить модератору
 Re: execute as  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

ownership chains, сиречь "цепочки владения".

Posted via ActualForum NNTP Server 1.4

15 окт 09, 12:55    [7790431]     Ответить | Цитировать Сообщить модератору
 Re: execute as  [new]
execas
Guest
Спасибо, прочитал.
Теперь вопрос, каким образом можно явно отключить эти проверки цепочек владения конкретно только для одной процедуры?
15 окт 09, 13:29    [7790750]     Ответить | Цитировать Сообщить модератору
 Re: execute as  [new]
Glory
Member

Откуда:
Сообщений: 104760
execas
Спасибо, прочитал.
Теперь вопрос, каким образом можно явно отключить эти проверки цепочек владения конкретно только для одной процедуры?

А зачем вы даете пользователю права на запуск этой процедуры ?
15 окт 09, 13:32    [7790782]     Ответить | Цитировать Сообщить модератору
 Re: execute as  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Спасибо, прочитал.
> Теперь вопрос, каким образом можно явно отключить эти проверки цепочек
> владения конкретно только для одной процедуры?

нарушить цепочку. т.е. сделать так, чтобы у таблицы и процедуры были
разные владельцы.
ну, есть, правда, еще такое - цепочки владения на динамический sql не распространяются.

Posted via ActualForum NNTP Server 1.4

15 окт 09, 13:34    [7790795]     Ответить | Цитировать Сообщить модератору
 Re: execute as  [new]
execas
Guest
daw

ну, есть, правда, еще такое - цепочки владения на динамический sql не распространяются.


О! а вот это магнифисент )
спасибо
15 окт 09, 13:55    [7791053]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить