在SQL Server中查询master..syslogins需要哪些权限?

时间:2010-07-02 08:25:21

标签: sql sql-server sql-server-2005

我只能访问master数据库,但以下查询只返回用户的子集。返回其他用户需要哪些权限?

SELECT [name] FROM master.dbo.syslogins

2 个答案:

答案 0 :(得分:4)

欢迎来到“MetaData Visibilty

在这种情况下,您只会看到与您相关联的行(例如,您是其中的成员)。

现在也是sys.server_principals。 syslogins是SQL Server 7及更早版本的古代遗物遗留视图(是SQL Server 2000中的sysxlogins)

从MSDN for sys.server_principals ...

  

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

要查看GRANT权限所需的所有行。

GRANT VIEW ANY DEFINITION TO ...

GRANT VIEW DEFINITION ON LOGIN::xxx TO ...

或者是“系统管理员”......

答案 1 :(得分:3)

你在使用什么版本的SQL Server?

SQL Server 2005已弃用syslogins目录视图 - 如果您使用的是2005或更高版本,则应使用sys.server_principalssys.sql_logins代替。

当你检查MSDN Books Online topic的sys.server_principals时,你会在页面底部看到一个注释:

  

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

转到Metadata Visibility Configuration页面,了解您将能够看到哪些对象的详细信息,以及如何与他人取得联系。

如果您想授予权限,此注释是最重要的部分:

  

要允许呼叫者查看元数据,您   可以授予呼叫者VIEW DEFINITION权限   适当范围:对象级别,   数据库级别或服务器级别。   因此,在前面的例子中,如果   来电者有VIEW DEFINITION   myTable的权限,存储   过程返回一行。