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?

questionAnswers(2)

yourAnswerToTheQuestion