У меня есть база данных, в которой есть роль приложения. Все члены роли принадлежат к группе в 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?