我只能访问master数据库,但以下查询只返回用户的子集。返回其他用户需要哪些权限?
SELECT [name] FROM master.dbo.syslogins
答案 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_principals
和sys.sql_logins
代替。
当你检查MSDN Books Online topic的sys.server_principals时,你会在页面底部看到一个注释:
在SQL Server 2005及更高版本中, 元数据的可见性 目录视图仅限于securables 用户拥有或拥有的 用户已被授予一些 允许。有关更多信息,请参阅 元数据可见性配置。
转到Metadata Visibility Configuration页面,了解您将能够看到哪些对象的详细信息,以及如何与他人取得联系。
如果您想授予权限,此注释是最重要的部分:
要允许呼叫者查看元数据,您 可以授予呼叫者
VIEW DEFINITION
权限 适当范围:对象级别, 数据库级别或服务器级别。 因此,在前面的例子中,如果 来电者有VIEW DEFINITION
myTable的权限,存储 过程返回一行。