如果我有以下观点:
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]
答案 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