从另一个数据库查看查询表的 SELECT 权限

Jer*_*und 6 sql-server-2008 security

SQL Server 2008 R2 SP1

我的公司使用具有多种自定义功能的 Great Plains (GP) 财务系统。我们的 GP 增值经销商 (VAR) 已在名为DYNCUSTOM.

DYNCUSTOM数据库一种观点认为,仅仅是SELECT * FROM在GP公司数据库(称为表PARTS)。一位在尝试在此视图上进行选择时遇到问题的用户联系了我。

他得到的错误:

Msg 229, Level 14, State 5, Line 2
SELECT permission denied on object 'BM010415', database 'PARTS', schema 'dbo'
Run Code Online (Sandbox Code Playgroud)

我查看了他的登录名是如何映射的,他在数据库中有一个数据库用户,该用户DYNCUSTOM属于granted select视图中的数据库角色。

但是,他在数据库中没有数据库用户PARTS

通常,视图的目的是为了在不公开对基础表的访问的情况下授予视图的选择权限。但是,对于 SQL Server,如果视图跨数据库,它是否会更改正在使用的安全上下文?因此,用户是否还需要数据库中的数据库用户PARTS以及授予对基础表的选择访问权限?

SQL*_*tar 3

在我看来,你有一个所有权链的案例。该链接应为您提供有关如何确保链条保持完整的详细信息。