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' |“members” ]

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

[ @privilege = ] 'variable_name' OUTPUT ]

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

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

返回代码值

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

结果集

列名称 数据类型 描述
帐户名称 sysname 完全限定的 Windows 帐户名。
type char(8) Windows 帐户类型。 有效值为 user or group进行求值的基于 SQL 语言的筛选器表达式。
特权 char(9) SQL Server 的访问特权。 有效值为 adminuserNULL
映射登录名 sysname 对于具有用户权限的用户帐户, 映射的登录名 显示 SQL Server 在使用此帐户登录时尝试使用的映射登录名,方法是将映射的规则与前面添加的域名一起使用。
权限路径 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 全局组的信息,而不是通用组。

权限

要求具有 EXECUTE 权限的数据库中 sysadmin 固定服务器角色的成员身份或公共固定数据库角色的成员master身份

示例

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

EXEC xp_logininfo 'BUILTIN\Administrators';