SQL Server 2016 DB_CHAINING 与视图

问题描述 投票:0回答:1

一夜之间,我们似乎开始让用户无法再读取我们数据库中的视图,而目标表位于另一个数据库中。到目前为止,我已经用尽了我所能找到的一切来找出这背后的原因,但我现在只是陷入困境,需要一些帮助。

为了让视图像这样工作,最终用户在两个数据库上都没有明确授予

SELECT
权限,需要启用
DB_CHAINING
选项。这适用于所有相关数据库。另一个先决条件是具有相同的数据库所有者,这也经过检查和验证仍然如此。最终用户还必须具有与表所在的目标数据库的连接授权,他们也这样做。

这是检查数据库所有者的查询,以及

DB_CHAINING
选项:

SELECT 
    name, 
    suser_sname(owner_sid) AS owner_name,
    is_db_chaining_on,owner_sid,
    owner_sid
FROM 
    sys.databases
WHERE 
    name IN ('TargetDB', 'ViewDB');

我还确保没有明确的授权拒绝访问,这一点自昨天以来没有改变,而且答复仍然是“否”。 考虑到上述情况,我无法弄清楚出了什么问题。

Microsoft SQL Server 2016 - 13.0.5893.48

sql-server
1个回答
0
投票

拥有对象的模式与 DB_OWNER 不同。通过对此进行排序,问题得到解决。日志中不可用的原因是 DB_OWNER 的更改是通过 SP 完成的,并且它没有记录模式所有者更改。恢复时,仅恢复了 DB_OWNER。

感谢@Thom A 提出了正确的问题。

© www.soinside.com 2019 - 2024. All rights reserved.