Разрешения SQL Server для хранимых процессов с динамическим SQL

У меня есть база данных, в которой есть роль приложения. Все члены роли принадлежат к группе в Active Directory. Вместо того, чтобы предоставить роли разрешения на выбор из таблиц, я дал роли разрешения на выполнение для всех хранимых процедур, которые ей необходимо вызвать.

Это работает нормально, за исключением одной из моих хранимых процедур, которая создает некоторый динамический SQL и вызывает sp_executesql.

Динамический sql выглядит примерно так:

SET @SQL = N'
SELECT * 
FROM dbo.uvView1 
INNER JOIN uvView2 ON uvView1.Id = uvView2.Id'

EXEC sp_executesql @SQL

Пользователи в этой роли не могут вызвать сохраненный процедура. Это дает следующую ошибку, которая, я полагаю, вполне ожидаема:

В разрешении SELECT было отказано для объекта 'uvView1', базы данных 'Foobar', схемы 'dbo'.

Есть ли способ, которым я могу иметь своих пользователей успешно выполнить эту процедуру без предоставления разрешений ролей всем представлениям в динамическом SQL?

11
задан A-K 2 November 2010 в 20:18
поделиться