xp_logininfo (Transact-SQL)
适用范围: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' |“members” ]
指定是报告有关帐户的所有权限路径的信息,还是报告有关 Windows 组成员的信息。 @option为 varchar(10),默认值为 NULL
. 除非 all
指定,否则只会显示第一个权限路径。
[ @privilege = ] 'variable_name' OUTPUT ]
一个输出参数,返回指定 Windows 帐户的特权级别。 @privilege 为 varchar(10),默认值为 Not wanted
. 返回的权限级别为 用户、 管理员或 null。
指定后OUTPUT
,此选项会将@privilege放在输出参数中。
返回代码值
0
(成功)或 1
(失败)。
结果集
列名称 | 数据类型 | 描述 |
---|---|---|
帐户名称 | sysname | 完全限定的 Windows 帐户名。 |
type | char(8) | Windows 帐户类型。 有效值为 user or group 进行求值的基于 SQL 语言的筛选器表达式。 |
特权 | char(9) | SQL Server 的访问特权。 有效值为 admin 、user 或 NULL 。 |
映射登录名 | sysname | 对于具有用户权限的用户帐户, 映射的登录名 显示 SQL Server 在使用此帐户登录时尝试使用的映射登录名,方法是将映射的规则与前面添加的域名一起使用。 |
权限路径 | 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 全局组的信息,而不是通用组。
权限
要求具有 EXECUTE 权限的数据库中 sysadmin 固定服务器角色的成员身份或公共固定数据库角色的成员master
身份。
示例
以下示例显示有关 BUILTIN\Administrators
Windows 组的信息。
EXEC xp_logininfo 'BUILTIN\Administrators';