在SQL Server中查询视图时是否需要基础表的权限?

时间:2014-04-22 12:01:19

标签: sql-server permissions

如果我有以下观点:

CREATE VIEW [dbo].[vw_Sample]
AS
    SELECT  T1.Column1, 
            T1.Column2,
            Table2.Column1, 
            Table2.Column2
    FROM dbo.Table1 T1
    JOIN dbo.Table2 T2 ON T2.Column3 = T1.Column3
GO

我想授予用户从该视图访问SELECT的权限;我需要:

A - 仅为视图授予该用户SELECT权限:

GRANT SELECT ON [dbo].[vw_Sample] TO [MyUser]

B - 为视图和基础表授予该用户SELECT权限:

GRANT SELECT ON [dbo].[Table1] TO [MyUser]
GRANT SELECT ON [dbo].[Table2] TO [MyUser]
GRANT SELECT ON [dbo].[vw_Sample] TO [MyUser]

2 个答案:

答案 0 :(得分:2)

只是视图(A)。在基础表上授予选择权将为他们提供比他们可能需要的更多访问权限。下面的链接提供了一些有关view \ table所有权的有用信息,以及它对您访问的影响。

Grant SELECT permission on a view, but not on underlying objects

答案 1 :(得分:0)

B中。您创建的每个对象(视图,过程或函数)都将在调用者权限下执行。因此,尝试从没有必要权限的基础表中进行选择将导致权限错误。或者您可以使用EXECUTE AS / SET USER语句:请参阅TechNet文章:http://technet.microsoft.com/en-au/library/ms188268(v=sql.105).aspx