报告帐户、帐户类型、帐户的特权级别、帐户的映射登录名和帐户访问 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"。返回的特权等级为 user、admin 或 null。
OUTPUT
如果指定,则将 variable_name 放置于输出参数中。
0(成功)或 1(失败)
列名 | 数据类型 | 描述 |
---|---|---|
account name | nchar(128) | 完全合法的 Windows NT 帐户名。 |
type | char(8) | Windows NT 帐户类型。有效值为 user 或 group。 |
privilege | char(9) | SQL Server 的访问特权。有效值为 admin、user 或 null。 |
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_name 和 all,则列出该帐户的所有权限路径。如果 account_name 是多个组的成员,并且所有这些组都有访问 SQL Server 的权限,则返回多个行。admin 特权行在 user 特权行之前报告,而同一特权等级内的行顺序由向帐户授予 SQL Server 访问权限的顺序决定。account_name 既适用于单个用户也适用于组。
如果指定了 account_name 和 members,则返回组的下一级成员列表。如果 account_name 是本地组,则该列表可以包含本地用户、域用户和全局组。如果 account_name 是全局帐户,则该列表由域用户组成。如果 account_name 是用户帐户,则返回错误信息。
xp_logininfo 的执行权限默认授予 master 数据库中的 db_owner 固定数据库角色成员以及 sysadmin 固定服务器角色成员,但可以授予其他用户。
下例显示有关 BUILTIN\Administrators Windows NT 组的信息。
EXEC xp_logininfo 'BUILTIN\Administrators'
系统存储过程(常规扩展过程)