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

Откуда: Московия
Сообщений: 91
Помогите неграмотному сделать первые шаги!!!

Есть функция:
alter function [rprt].[KlntTrn2]( 	
)
returns table
as
return
(SELECT [CONT] FROM [Table1])

Пытаюсь добавить "with execute as owner"
alter function [rprt].[KlntTrn2]( 	
)
returns table
with execute as owner
as
return
(SELECT [CONT] FROM [Table1])

Выдает ошибку:
Сообщение 487, уровень 16, состояние 1, процедура KlntTrn2, строка 24
An invalid option was specified for the statement "CREATE/ALTER FUNCTION".
Сообщение 178, уровень 15, состояние 1, процедура KlntTrn2, строка 26
A RETURN statement with a return value cannot be used in this context.

Как это обойти? Очень не хочу писать конструкцию:
RETURNS @return_variable TABLE <table_type_definition>
    [ WITH <function_option> [ ,...n ] ]
    [ AS ]
    BEGIN 
        function_body 
        RETURN
    END

Заранее спасибо!
20 июл 15, 22:04    [17914893]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
1.
https://msdn.microsoft.com/ru-ru/library/ms186755.aspx
EXECUTE AS cannot be specified for inline user-defined functions.

2. Зачем вам это понадобилось?
20 июл 15, 22:20    [17914928]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
b2w
Member

Откуда: Московия
Сообщений: 91
По п. 1 не видел. Жаль...

По п.2. Список столбцов до конца не определен, хотел облегчить работу. Придется RETURNS @return_variable TABLE писать :(

Спасибо!
21 июл 15, 10:37    [17915838]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
b2w
Список столбцов до конца не определен, хотел облегчить работу.
Интересно, как список столбцов связан с execute as?
21 июл 15, 10:41    [17915872]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
b2w
Member

Откуда: Московия
Сообщений: 91
Походу я что-то не так ответил :)
21 июл 15, 10:50    [17915922]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
b2w
Member

Откуда: Московия
Сообщений: 91
Повтор...
На основе данной ф-ии строится отчет. Запускают функцию все подряд (в т.ч. не имеющие доступа к таблицам, которые я вижу). Т.к. отчет еще много раз перепишут я хотел его запустить с текущим набором столбцов и по мере получения заявок править...
21 июл 15, 10:54    [17915946]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
b2w
Т.к. отчет еще много раз перепишут я хотел его запустить с текущим набором столбцов и по мере получения заявок править...
Еще раз: причем тут execute as?
21 июл 15, 11:05    [17916012]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
b2w
Member

Откуда: Московия
Сообщений: 91
invm
b2w
Т.к. отчет еще много раз перепишут я хотел его запустить с текущим набором столбцов и по мере получения заявок править...
Еще раз: причем тут execute as?


"Запускают функцию все подряд (в т.ч. не имеющие доступа к таблицам, которые я вижу)" Не спорю мб есть альтернативный способ передать права, я пока учусь. Поделитесь знаниями...
21 июл 15, 11:10    [17916039]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
Glory
Member

Откуда:
Сообщений: 104760
b2w
Не спорю мб есть альтернативный способ передать права, я пока учусь.

Какие еще передачи прав ?
Просто выдайте права на еxecute. Делается это командой GRANT. А не прописываением в теле функции execute as
21 июл 15, 11:12    [17916059]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
b2w
Member

Откуда: Московия
Сообщений: 91
To Glory, право за выполнение функции есть. Вообще на все объекты схемы [rprt] есть права просмотра и запуска. Но данная ф-ия обращается к таблицам из схемы [dbo], прав на которые нет. До вчера мне "with execute as owner" позволяло обходить данную проблему (правда использовал только процедуры). Полез в ф-ии и такая засада...
21 июл 15, 11:26    [17916152]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
b2w
Но данная ф-ия обращается к таблицам из схемы [dbo], прав на которые нет
Ваша проблема - разные владельцы у схем rprt и dbo. Выполните:
alter authorization on schema::[rprt] to dbo;

Для понимания происходящего читать - Цепочки владения
21 июл 15, 11:34    [17916192]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
b2w
Member

Откуда: Московия
Сообщений: 91
К сожалению на схему dbo права давать нельзя.
21 июл 15, 11:41    [17916233]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с alter function with execute as owner?  [new]
o-o
Guest
b2w
К сожалению на схему dbo права давать нельзя.

никто и не дает. схеме rprt меняют овнера.
а ссылку тоже к сожалению прочесть не удалось?
21 июл 15, 11:49    [17916276]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить