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 (失敗)
結果集
資料行名稱 |
資料類型 |
說明 |
---|---|---|
帳戶名稱 |
sysname |
完整的 Windows 帳戶名稱。 |
型別 |
char(8) |
Windows 帳戶的類型。有效值是 user 或 group。 |
權限 |
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 必須連接到網域控制器,才能擷取群組成員資格資訊。如果伺服器無法連上網域控制器,就不會傳回任何資訊。
xp_logininfo 只會從 Active Director 全域群組而不會從萬用群組傳回資訊。
權限
需要 sysadmin 固定伺服器角色中的成員資格,或具有 EXECUTE 權限的 master 資料庫中 public 固定資料庫角色的成員資格。
範例
下列範例會顯示 BUILTIN\Administrators Windows 群組的相關資訊。
EXEC xp_logininfo 'BUILTIN\Administrators'