2016-10-04 3 views
1

Какой запрос я могу использовать для получения списка всех логинов, связанных с каждым пользователем в SQL Azure?SQL Query, чтобы получить сопоставление всех пользователей с их логинами

До сих пор я нашел следующие два запроса, чтобы получить все пользователи и все логины, но я не нашел способ, чтобы увидеть, какой пользователь идет с которым логин:

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, с.и.д., тип, 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

имена столбцов: идентификатор пользователя, статус, имя, сид, роли, созданный, обновленный, altuid, пароль, gid, environment, 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. Сид был внешним ключом, который был расположен в обеих таблицах. Вот почему мы смогли присоединиться к двум таблицам. –

1

Я думаю, что вы можете присоединиться на sid, попробуйте это (но, возможно, просто выберите нужные столбцы):

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