我在DatabaseBSchemaX.VW_VIEW
上创建了一个视图。此视图正在从同一服务器的另一个数据库DatabaseA中查询数据。
我已将 SELECT 权限授予VW_VIEW
用户。但是,当用户尝试查询视图时,它会显示“对象 'OriginTable'、数据库 'DatabaseA'、模式 'SchemaY' 的 SELECT 权限被拒绝。
SchemaY 和 SchemaX 都归“dbo”所有,因此所有权链接不应有任何中断。
如何在不授予对基础表的读取访问权限的情况下解决此问题?
为了在具有视图的数据库之间保持完整的所有权链,在 dbo 拥有的对象的情况下,数据库必须由同一登录名拥有。此外,
DB_CHAINING
需要为所涉及的数据库启用该选项。用户需要对视图访问的所有数据库的连接权限,但只需要授予对视图的权限。请注意
DB_CHAINING
. 仅当您完全信任可以在启用了链接的数据库中创建对象的用户时才启用该选项。sysadmin
当只有角色成员可以在部署之前创建对象和查看脚本时,这不是一个问题。