xp_logininfo (Transact-SQL)

返回有关 Windows 用户和 Windows 组的信息。

主题链接图标Transact-SQL 语法约定

语法

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”。返回的特权级别为 useradminnull

  • OUTPUT
    如果指定了此选项,则将 variable_name 放置于输出参数中。

返回代码值

0(成功)或 1(失败)

结果集

列名

数据类型

说明

account name

sysname

完全限定的 Windows 帐户名。

类型

char(8)

Windows 帐户类型。有效值为 usergroup

privilege

char(9)

SQL Server 的访问特权。有效值为 adminusernull

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 必须连接到域控制器,才能检索组成员身份信息。如果该服务器无法联系域控制器,则不返回任何信息。

xp_logininfo 只从 Active Director 全局组返回信息,而不从通用组返回信息。

权限

需要 sysadmin 固定服务器角色的成员身份或 master 数据库中的 public 固定数据库角色的成员身份且授予了 EXECUTE 权限。

示例

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

EXEC xp_logininfo 'BUILTIN\Administrators'