Estou falando do SQL Server em particular. Suponho que um usuário tentou e obteve um erro (você não tem permissões de seleção na exibição subjacente oculta B não mencionada explicitamente na consulta). A exibição principal A une uma tabela e outra exibição (exibição B) juntas e elas não têm permissão para a exibição B.
Não sou responsável pelas permissões do banco de dados, mas estou curioso para saber como funciona.
Você precisa conceder permissões para cada objeto construído sob as exibições? Ou apenas a vista em si? Ou qualquer um?
Achei que um dos propósitos das visualizações era um instantâneo de objetos subjacentes aos quais você NÃO deseja conceder permissões totais. Isso é o que é incomum para mim.
As permissões precisam ser concedidas à pessoa que executa a consulta para cada objeto referenciado pela exibição. Exceto se forem de propriedade do proprietário da exibição. Nessa eventualidade , as Cadeias de Propriedade entram em jogo.
O abaixo cria duas tabelas. T1 (de propriedade de TestUser1) e T2 (de propriedade de TestUser2) e uma exibição que faz referência a ambas as tabelas e pertence a TestUser1.
Um terceiro usuário recebe permissões SELECT na exibição, mas nenhum dos objetos subjacentes. A seleção da exibição inicialmente falha para eles. No entanto, é bem-sucedido depois que eles recebem permissões de seleção em T2. Não há necessidade de conceder a eles permissões em T1, pois ele pertence ao mesmo usuário da exibição.
Configurar
Teste 1 (falha)
Teste 2 (Sucesso)
Limpar
É o proprietário da exibição que precisa de permissões para a tabela subjacente, não a pessoa que consulta a exibição. Se você estiver recebendo uma mensagem de permissão negada ao consultar a exibição, pode ser porque o proprietário da exibição não tem a permissão apropriada para uma das tabelas subjacentes.