Permissões do SQL Server em procs armazenados com SQL dinâmico
Eu tenho um banco de dados que tem uma função de aplicativo. Todos os membros da função pertencem a um grupo no Active Directory. Em vez de conceder à função permissões para selecionar nas tabelas, eu concedo à função executar permissões em todos os procedimentos armazenados que ele precisa chamar.
Isso funciona bem, exceto por um dos meus procedimentos armazenados, que está construindo um SQL dinâmico e chamando sp_executesql.
O sql dinâmico é mais ou menos assim:
SET @SQL = N'
SELECT *
FROM dbo.uvView1
INNER JOIN uvView2 ON uvView1.Id = uvView2.Id'
EXEC sp_executesql @SQL
Os usuários nesta função estão falhando ao chamar o procedimento armazenado. Ele fornece o seguinte erro, que é uma espécie de esperado, suponho:
A permissão SELECT foi negada no objeto 'uvView1', banco de dados 'Foobar', esquema 'dbo'.
Existe uma maneira de que meus usuários executem esse processo com êxito sem conceder permissões de função a todos os modos de exibição no SQL dinâmico?