我有一个数据库,我想让某个角色获得查询sys.databaseprincipals中所有信息的权限,并查看其他用户名。我怎么能这样做?
感谢。
答案 0 :(得分:1)
将调用包含在存储过程或表值函数中,并使用EXECUTE AS OWNER(假设为dbo.nameofcodeobject)。
否则,您必须关闭整个服务器的MetaData Visibility保护
您不能将EXECUTE AS用于此处有用的视图......
根据评论进行修改。
在SQL Server 2005及更高版本中, 元数据的可见性 目录视图仅限于securables 用户拥有或拥有的 用户已被授予一些 允许。有关更多信息,请参阅 元数据可见性配置。
答案 1 :(得分:0)
也许它只是我和我的服务器设置但我能够查询sys.database_principals只要我有连接权限。我也能看到用户名。
您可以通过以下方式授予Connect:
授予[用户]
的权利