适用范围:SQL Server
返回有关 Windows 用户和 Windows 组的信息。
语法
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\macraes 或 BUILTIN\Administrators。
[ @option = ]“all”|“成员”
指定是报告有关帐户的所有权限路径的信息,还是报告有关 Windows 组成员的信息。
@option为 varchar(10),默认值为 NULL. 除非 all 指定,否则只会显示第一个权限路径。
[ @privilege = ]“variable_name” OUTPUT
一个输出参数,返回指定 Windows 帐户的特权级别。
@privilege 为 varchar(10),默认值为 Not wanted. 返回的特权级别为 user、admin或 null。
指定后OUTPUT,此选项会将@privilege放在输出参数中。
返回代码值
0(成功)或 1(失败)。
结果集
| 列名称 | 数据类型 | 描述 |
|---|---|---|
account name |
sysname | 完全限定的 Windows 帐户名。 |
type |
char(8) | Windows 帐户类型。 有效值为 user or group进行求值的基于 SQL 语言的筛选器表达式。 |
privilege |
char(9) | SQL Server 的访问特权。 有效值为 admin、user 或 NULL。 |
mapped login name |
sysname | 对于具有用户权限的用户帐户,mapped login name 显示 SQL Server 在使用此帐户登录时尝试使用的映射登录名,方法是使用前面添加的域名的映射规则。 |
permission path |
sysname | 使帐户得到访问权限的组成员身份。 |
注解
如果 指定@acctname , xp_logininfo 则报告指定 Windows 用户或组的最高特权级别。 如果 Windows 用户同时作为系统管理员和域用户具有访问权限,则会将其报告为系统管理员。 如果用户是具有相同权限级别的多个 Windows 组的成员,则只会报告首次授予对 SQL Server 的访问权限的组。
如果 @acctname 是未与 SQL Server 登录名关联的有效 Windows 用户或组,则返回空结果集。 如果 无法将@acctname 标识为有效的 Windows 用户或组,则返回错误消息。
如果 @acctname 并 all 指定,则返回 Windows 用户或组的所有权限路径。 如果 @acctname 是多个组的成员,则返回多个行,所有这些组都被授予对 SQL Server 的访问权限。 特权 admin 行在特权行之前 user 返回,在特权级别内,按创建相应 SQL Server 登录名的顺序返回行。
如果 @acctname 并 members 指定,则返回组的下一级成员的列表。 如果 @acctname 是本地组,则列表可以包括本地用户、域用户和组。 如果 @acctname 是域帐户,则列表由域用户组成。 SQL Server 必须连接到域控制器才能检索组成员身份信息。 如果服务器无法联系域控制器,则不会返回任何信息。
xp_logininfo 仅返回 Active Directory 全局组的信息,而不是通用组。
权限
需要对服务器具有 CONTROL SERVER 权限,或者 master 数据库中具有 xp_logininfo授予 EXECUTE 权限的用户帐户。
示例
以下示例显示有关 BUILTIN\Administrators Windows 组的信息。
EXECUTE xp_logininfo 'BUILTIN\Administrators';