Transact-SQL 参考

xp_logininfo

报告帐户、帐户类型、帐户的特权级别、帐户的映射登录名和帐户访问 Microsoft® SQL Server™ 的权限路径。

语法

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

参数

[@acctname =] 'account_name'

是授权访问 SQL Server 的 Microsoft Windows NT® 的用户或组的名称。account_name 的数据类型为 sysname,默认值为 NULL。如果未给定 account_name,则报告所有显式授予其登录权限的组和用户。必须用帐户所属的 Windows NT 域或计算机名限定 Windows NT 用户或组。

'all' | 'members'

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

[@privelege =] variable_name

是输出参数,返回指定的 Windows NT 帐户的特权等级。variable_name 的数据类型为 varchar(10),其默认值为"Not wanted"。返回的特权等级为 useradminnull

OUTPUT

如果指定,则将 variable_name 放置于输出参数中。

返回代码值

0(成功)或 1(失败)

结果集
列名 数据类型 描述
account name nchar(128) 完全合法的 Windows NT 帐户名。
type char(8) Windows NT 帐户类型。有效值为 usergroup
privilege char(9) SQL Server 的访问特权。有效值为 adminusernull
mapped login name nchar(128) 对于拥有用户特权的用户帐户,mapped login name 显示在用该帐户登录时 SQL Server 试图使用的映射登录名(采用前面添加域名的映射规则)。
permission path nchar(128) 使帐户得到访问权限的组成员资格。

注释

如果指定 account_name 作为第一个参数,则 xp_logininfo 报告该帐户的最高访问特权等级。如果用户有系统管理员访问权限和用户访问权限,则只报告系统管理员级(最高特权)条目。如果用户属于多个拥有相同特权等级的组,则只报告第一个匹配的组(组的顺序按向这些组授予 SQL Server 访问权限的顺序决定),并最多返回一行结果。

如果 account_name 是有效 Windows NT 帐户,但该帐户没有访问 SQL Server 的权限,则返回空结果集。如果 account_name 无法识别为有效的 Windows NT 帐户,则返回错误信息。

如果指定了 account_nameall,则列出该帐户的所有权限路径。如果 account_name 是多个组的成员,并且所有这些组都有访问 SQL Server 的权限,则返回多个行。admin 特权行在 user 特权行之前报告,而同一特权等级内的行顺序由向帐户授予 SQL Server 访问权限的顺序决定。account_name 既适用于单个用户也适用于组。

如果指定了 account_namemembers,则返回组的下一级成员列表。如果 account_name 是本地组,则该列表可以包含本地用户、域用户和全局组。如果 account_name 是全局帐户,则该列表由域用户组成。如果 account_name 是用户帐户,则返回错误信息。

权限

xp_logininfo 的执行权限默认授予 master 数据库中的 db_owner 固定数据库角色成员以及 sysadmin 固定服务器角色成员,但可以授予其他用户。

示例

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

EXEC xp_logininfo 'BUILTIN\Administrators'

请参见

sp_denylogin

sp_grantlogin

sp_revokelogin

系统存储过程(常规扩展过程)

xp_loginconfig