xp_logininfo (Transact-SQL)

适用范围:SQL Server

返回有关 Windows 用户和 Windows 组的信息。

Transact-SQL 语法约定

语法

xp_logininfo [ [ @acctname = ] 'account_name' ]
     [ , [ @option = ] 'all' | 'members' ]
     [ , [ @privilege = ] 'variable_name' OUTPUT ]

参数

[ @acctname = ] '@acctname'

授予对 SQL Server 访问权限的 Windows 用户或组的名称。 @acctname为 sysname,默认值为 NULL. 如果未指定 @acctname,则报告显式授予登录权限的所有 Windows 组和 Windows 用户。 @acctname必须完全限定。 例如,CONTOSO\macraesBUILTIN\Administrators

[ @option = ]“all”|“成员

指定是报告有关帐户的所有权限路径的信息,还是报告有关 Windows 组成员的信息。 @option为 varchar(10),默认值为 NULL. 除非 all 指定,否则只会显示第一个权限路径。

[ @privilege = ]“variable_name” OUTPUT

一个输出参数,返回指定 Windows 帐户的特权级别。 @privilegevarchar(10),默认值为 Not wanted. 返回的特权级别为 useradminnull

指定后OUTPUT,此选项会将@privilege放在输出参数中。

返回代码值

0(成功)或 1(失败)。

结果集

列名称 数据类型 描述
account name sysname 完全限定的 Windows 帐户名。
type char(8) Windows 帐户类型。 有效值为 user or group进行求值的基于 SQL 语言的筛选器表达式。
privilege char(9) SQL Server 的访问特权。 有效值为 adminuserNULL
mapped login name sysname 对于具有用户权限的用户帐户,mapped login name 显示 SQL Server 在使用此帐户登录时尝试使用的映射登录名,方法是使用前面添加的域名的映射规则。
permission path sysname 使帐户得到访问权限的组成员身份。

注解

如果 指定@acctnamexp_logininfo 则报告指定 Windows 用户或组的最高特权级别。 如果 Windows 用户同时作为系统管理员和域用户具有访问权限,则会将其报告为系统管理员。 如果用户是具有相同权限级别的多个 Windows 组的成员,则只会报告首次授予对 SQL Server 的访问权限的组。

如果 @acctname 是未与 SQL Server 登录名关联的有效 Windows 用户或组,则返回空结果集。 如果 无法将@acctname 标识为有效的 Windows 用户或组,则返回错误消息。

如果 @acctnameall 指定,则返回 Windows 用户或组的所有权限路径。 如果 @acctname 是多个组的成员,则返回多个行,所有这些组都被授予对 SQL Server 的访问权限。 特权 admin 行在特权行之前 user 返回,在特权级别内,按创建相应 SQL Server 登录名的顺序返回行。

如果 @acctnamemembers 指定,则返回组的下一级成员的列表。 如果 @acctname 是本地组,则列表可以包括本地用户、域用户和组。 如果 @acctname 是域帐户,则列表由域用户组成。 SQL Server 必须连接到域控制器才能检索组成员身份信息。 如果服务器无法联系域控制器,则不会返回任何信息。

xp_logininfo 仅返回 Active Directory 全局组的信息,而不是通用组。

权限

需要对服务器具有 CONTROL SERVER 权限,或者 master 数据库中具有 xp_logininfo授予 EXECUTE 权限的用户帐户。

示例

以下示例显示有关 BUILTIN\Administrators Windows 组的信息。

EXECUTE xp_logininfo 'BUILTIN\Administrators';