Eu criei uma visão SchemaX.VW_VIEW
em um DatabaseB . Esta visualização está consultando dados de outro banco de dados DatabaseA do mesmo servidor.
Eu concedi a permissão SELECT VW_VIEW
para um usuário. No entanto, quando o usuário tenta consultar a exibição, ele diz "A permissão SELECT foi negada no objeto 'OriginTable', banco de dados 'DatabaseA', esquema 'SchemaY'.
SchemaY e SchemaX são de propriedade de 'dbo', portanto, não deve haver nenhuma interrupção no encadeamento de propriedade.
Como posso corrigir esse problema sem conceder acesso de leitura às tabelas subjacentes?
Para manter uma cadeia de propriedade ininterrupta entre bancos de dados com exibições, os bancos de dados devem ser de propriedade do mesmo logon no caso de objetos de propriedade de dbo. Além disso, a
DB_CHAINING
opção precisa ser habilitada para os bancos de dados envolvidos. O usuário precisa de permissões de conexão a todos os bancos de dados acessados pela exibição, mas somente as permissões na exibição precisam ser concedidas.Esteja ciente das implicações de segurança com o
DB_CHAINING
. Habilite a opção somente quando você confiar totalmente em usuários que podem criar objetos em bancos de dados com encadeamento habilitado. Isso é menos preocupante quando apenassysadmin
os membros da função podem criar objetos e revisar scripts antes da implantação.