让用户查看sys.databaseprincipals的所有信息

时间:2009-03-05 15:35:53

标签: sql-server

我有一个数据库,我想让某个角色获得查询sys.databaseprincipals中所有信息的权限,并查看其他用户名。我怎么能这样做?

感谢。

2 个答案:

答案 0 :(得分:1)

将调用包含在存储过程或表值函数中,并使用EXECUTE AS OWNER(假设为dbo.nameofcodeobject)。

否则,您必须关闭整个服务器的MetaData Visibility保护

您不能将EXECUTE AS用于此处有用的视图......

根据评论进行修改。

来自sys.database_principals

  

在SQL Server 2005及更高版本中,   元数据的可见性   目录视图仅限于securables   用户拥有或拥有的   用户已被授予一些   允许。有关更多信息,请参阅   元数据可见性配置。

  • dbo拥有一切,所以看到了一切
  • 由于没有“GRANT VIEW SECURITY”
  • ,因此无法授予权限

答案 1 :(得分:0)

也许它只是我和我的服务器设置但我能够查询sys.database_principals只要我有连接权限。我也能看到用户名。

您可以通过以下方式授予Connect:

授予[用户]

的权利