SQL Server 2014:View Any Definition权限被授予角色并在数据库级别分配

时间:2016-02-10 19:18:24

标签: sql-server

在SQL Server 2014中,可以将“查看任意定义”权限授予角色并在数据库级别分配吗?我只看到它在服务器/用户级别分配。感谢

2 个答案:

答案 0 :(得分:1)

这有帮助,我在下面的数据库级别看到(我没有角色,所以只分配给公众演示,你可以分配给你的角色)

List<Object>

enter image description here

答案 1 :(得分:1)

如果我理解您的问题,那么您要求授予将特定数据库中的目录视图元数据的访问权限授予组的能力,而不是为整个服务器授予此类权限,是否正确?

根据此假设,您可以使用VIEW DEFINITION权限来实现此目标,例如:

-- Create a role that will have access to all ,etadata (catalog views) on this database
CREATE ROLE [metadata_visibility_group]
go
GRANT VIEW DEFINITION TO [metadata_visibility_group]
go

要验证这是否是您的真实目的,请尝试以下操作:

-- Testing
CREATE USER [toto] WITHOUT LOGIN
go
EXECUTE ('SELECT * FROM sys.sql_modules') AS USER = 'toto'
ALTER ROLE [metadata_visibility_group] ADD MEMBER [toto]
EXECUTE ('SELECT * FROM sys.sql_modules') AS USER = 'toto'
go
DROP USER [toto]
go

您会注意到,在成为角色的成员之前,我们的演示用户可以看到一组有限的模块,很可能看不到模块定义;成为该角色的成员后,可以访问模块的所有元数据,包括定义。

我希望这会有所帮助