2016-10-04 53 views
1

我可以使用什麼查詢來獲取與SQL Azure中每個用戶關聯的所有登錄名列表?SQL查詢以獲取所有用戶到其登錄名的映射

到目前爲止,我已經找到了以下兩個查詢來獲取所有用戶和所有登錄,但我還沒有找到任何辦法看到哪個用戶與哪個登錄:

SELECT * from sys.sql_logins -- get all logins 
SELECT * from sys.sysusers -- get all users 

如果你發現它的幫助,這裏是對於那些結構表的文檔:

sys.sql_logins: https://msdn.microsoft.com/en-us/library/ms174355.aspx?f=255&MSPPError=-2147217396

列名:名,principal_id,SID,類型,type_desc,is_disabled,CREATE_DATE,modify_date,default_database_name,default_language_name,credential_id,is_policy_checked,is_expiration_checked,password_hash

sys.sysusers:https://msdn.microsoft.com/en-us/library/ms179871.aspx

列名: UID,狀態,名稱,sid,角色,創建,更新,altuid,密碼,gid,環境,hasdbaccess,islogin,isntname,isntgroup,isntuser,issqluser,isaliased,issqlrole,isapprole

+1

可以顯示每個表結構嗎? –

+1

希望在登錄表或將其鏈接在一起的用戶表中有一個鍵。然後你會在該鍵上執行一個連接。如果您向我們顯示錶格中的列,我們應該能夠找出它們 – kbball

+0

@SariRahal這些是默認的SQL系統表,我沒有自定義任何東西。但我已經添加了鏈接到官方文檔描述他們的結構 –

回答

2

很難告訴你你的正確答案b/c我們不不知道你的桌子的結構。如果你分享我們可以提供更多幫助。但下面應該讓你到你需要去的地方。

他們的方式是通過MySQL JOIN來完成。在這種情況下,您應該使用INNER或OUTER JOIN,具體取決於數據庫的結構。

如果你有2代表所構造下面你可以做一個FULL OUTER JOIN

[sys.sql_logins]

| sid| userID | name | 
| 1 | 1  | ssmith | 
| 2 | 2  | bbob | 

[sys.sysusers]

| sid| name  | 
| 1 | Sam Smith | 
| 2 | Billy Bob | 

你可以使用以下查詢來做到這一點

SELECT A.name as userName, B.name as login 
FROM sys.sysusers A 
    FULL OUTER JOIN sys.sql_logins B 
    ON A.sid = B.sid 

這將導致:

| userName | logins | 
| Same Smith | ssmith | 
| Billy Bob | bbob | 

這裏有更多類型的MySQL的鏈接加入

https://www.sitepoint.com/understanding-sql-joins-mysql-database/

http://dev.mysql.com/doc/refman/5.7/en/join.html

http://www.w3schools.com/sql/sql_join.asp

+0

這樣做。謝謝。我對SQL連接非常熟悉,但我不明白sid列是什麼,也不知道它可以用來進行連接。 –

+0

NP。 sid是位於兩個表中的外鍵。這就是爲什麼我們能夠加入這兩張桌子。 –

1

我想你可以加入的sid,試試這個(但也許只是選擇你想要的任何列):

select l.*, u.* 
from sys.sql_logins l 
join sys.sysusers u on l.sid = u.sid