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'。傳回的權限層級是 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 是有效的 Windows 使用者或群組,但該使用者或群組與 SQL Server 沒有關聯,則會傳回空的結果集。如果 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 資料庫中已授與 EXECUTE 權限之 public 固定資料庫角色的成員資格。

範例

下列範例會顯示 BUILTIN\Administrators Windows 群組的相關資訊。

EXEC xp_logininfo 'BUILTIN\Administrators'