Назад | Перейти на главную страницу

SQL: имя без имени входа

Я заметил, что когда я открываю диспетчер предприятия SQL Server и перехожу к списку пользователей в конкретной БД, я обнаружил пользователей с «Имя», но у некоторых нет значения «Имя для входа». Что это значит? Означает ли это, что

1) пользователи вообще не могут авторизоваться на сервере?

2) это системный идентификатор (или идентификатор приложения, поэтому ни один пользователь не сможет использовать его для входа в систему, и только приложения могут использовать его для доступа к базе данных?)

3) есть единый вход, поэтому, как только пользователь войдет на сервер, он снова сможет получить доступ к базе данных без аутентификации?

Мой второй вопрос относится к пользователям из группы «Безопасность» в Enterprise Manager. Когда можно сказать, что «a» здесь, а «a» также присутствует в пользователях db, это означает, что «a» может получать доступ и изменять данные в дб правильно? Но если «b» находится в группе безопасности, но не в пользователях db, это означает, что он не может войти в db, а только вносить изменения только на сервере?

Мой третий вопрос: если база данных по умолчанию является главной, это означает, что этот пользователь может вносить изменения во всю базу данных?

Огромное спасибо всем, кто отвечает на мои вопросы!

База данных логины и пользователи базы данных разные. Обычно логину предоставляются разрешения на сервер, а пользователю предоставляются права доступа к базе данных. Логины сопоставляются с базами данных.

Я предполагаю, что причина того, что у вас есть пользователи в базе данных, которые не сопоставлены с логинами, заключается в том, что вы восстановили базу данных с другого SQL Server, а не скопировали логины через нее. В основном есть 2 способа исправление осиротевших пользователей. Ты можешь использовать sp_change_users_login, или вы можете копировать логины между серверами так матч сид.

Если вы хотите использовать метод единого входа, вы можете сделать это путем интеграции с Active Directory с помощью создание входа в Windows вместо использования входа в систему sql.

Да, вы можете сопоставить логин более чем с одной базой данных. Ты можешь GRANT доступ к различным объектам для каждой базы данных пользователю или добавление пользователя в роль базы данных. Существуют также общесерверные роли, которые предоставляют доступ к базе данных для входа в систему, хорошим примером этого является роль системного администратора. Установка базы данных по умолчанию для входа в систему не дает этому имени входа никаких разрешений в базе данных. Вы обнаружите, что логин по умолчанию находится в общедоступной группе, и это дает им очень низкоуровневый доступ к master & tempdb.

Вам необходимо явно предоставить доступ для входа в базу данных. Вы делаете это с sp_adduser. Если вы создаете пользователей в Enterprise Manager, то да, имя для входа будет соответствовать имени пользователя, но это не обязательно, sproc позволяет вам установить другое имя пользователя.
Этот пример кода демонстрирует разницу:

SELECT USER  --database user
SELECT SYSTEM_USER  --login

Я не знаю о DB2, но Oracle не имеет концепции входа в систему и пользователя.