xp_logininfo (Transact-SQL)
返回有关 Windows 用户和 Windows 组的信息。
语法
xp_logininfo [ [ @acctname = ] 'account_name' ]
[ , [ @option = ] 'all' | 'members' ]
[ , [ @privilege = ] variable_name OUTPUT]
参数
[ @acctname = ] 'account_name'
被授予 SQL Server 访问权限的 Windows 用户或组的名称。account_name 的数据类型为 sysname,默认值为 NULL。如果未指定 account_name,则报告所有被显式授予登录权限的 Windows 组和 Windows 用户。account_name 必须是完全限定的。例如,“ADVWKS4\macraes”或“BUILTIN\Administrators”。'all' | 'members'
指定是报告有关帐户的所有权限路径的信息,还是报告有关 Windows 组成员的信息。@option 的数据类型为 varchar(10),默认值为 NULL。除非指定了 all,否则仅显示第一个权限路径。[ @privilege = ] variable_name
返回指定 Windows 帐户的特权级别的输出参数。variable_name 的数据类型为 varchar(10),默认值为“Not wanted”。返回的特权级别为 user、admin 或 null。OUTPUT
如果指定了此选项,则将 variable_name 放置于输出参数中。
返回代码值
0(成功)或 1(失败)
结果集
列名 |
数据类型 |
说明 |
---|---|---|
account name |
sysname |
完全限定的 Windows 帐户名。 |
type |
char(8) |
Windows 帐户类型。有效值为 user 或 group。 |
privilege |
char(9) |
SQL Server 的访问特权。有效值为 admin、user 或 null。 |
mapped login name |
sysname |
对于拥有用户特权的用户帐户,mapped login name 显示在用此帐户登录时 SQL Server 尝试使用的映射登录名(采用前面添加域名的映射规则)。 |
permission path |
sysname |
使帐户得到访问权限的组成员身份。 |
注释
如果指定了 account_name ,则 xp_logininfo 报告指定 Windows 用户或组的最高特权级别。如果 Windows 用户同时拥有系统管理员和域用户访问权限,则会报告为系统管理员。如果该用户是多个具有相等特权级别的 Windows 组的成员,则只报告第一个被授予 SQL Server 访问权限的组。
如果 account_name 是与 SQL Server 登录名无关的有效 Windows 用户或组,则返回一个空结果集。如果 account_name 无法识别为有效的 Windows 用户或组,则返回一条错误消息。
如果指定了 account_name 和 all,则返回 Windows 用户或组的所有权限路径。如果 account_name 是多个组的成员,并且所有这些组都已被授予 SQL Server 访问权限,则返回多个行。将先返回 admin 特权行,然后再返回 user 特权行,并且在一个特权级别内按创建相应 SQL Server 登录名的顺序返回行。
如果指定了 account_name 和 members,则返回组的下一级成员列表。如果 account_name 是本地组,则该列表可以包含本地用户、域用户和组。如果 account_name 是域帐户,则该列表由域用户组成。SQL Server 必须连接到域控制器,才能检索组成员身份信息。如果该服务器无法联系域控制器,则不返回任何信息。
权限
要求具有 sysadmin 固定服务器角色的成员身份,或具有 master 数据库中的 public 固定数据库角色成员身份且拥有 EXECUTE 权限。
示例
下面的示例显示有关 BUILTIN\Administrators Windows 组的信息。
EXEC xp_logininfo 'BUILTIN\Administrators'