Я пытаюсь создать учетную запись пользователя БД, которая имеет доступ только к определенной базе данных и не может читать или изменять другие базы данных, а также не может изменять учетные данные для других учетных записей.
Я случайно удалил этого пользователя из роли «публичного» сервера во время устранения неполадок с подключением, что заблокировало мой доступ к серверу из Management Studio для учетной записи.
Единственный способ получить доступ — добавить пользователя к роли системного администратора, но это не сработает, поскольку теперь у пользователя есть доступ ко всем базам данных.
Теперь, когда я пытаюсь добавить пользователя обратно в роль публичного сервера, я получаю сообщение об ошибке, в котором говорится, что членство в роли не может быть изменено.
Любопытно, что когда я нажимаю правой кнопкой мыши на имени пользователя и просматриваю свойства, система утверждает, что пользователь является членом публичной роли, и не позволяет мне изменить членство.
Вопросы:
- Итак, если членство в публичной роли нельзя изменить, то как я вообще смог удалить пользователя из роли?
- Как мне снова добавить пользователя, чтобы восстановить доступ к студии управления для этого пользователя?
решение1
Чтобы помочь с дополнительными подробностями, вот как все это должно выглядеть, чтобы вы могли точно сказать, какая часть неверна. У вас есть логин для сервера и пользователь для базы данных для учетной записи, с которой у вас возникли проблемы. На уровнях сервера и базы данных вы увидите публичную роль (роль сервера и роль базы данных). Свойства публичной серверной роли не будут показывать пользователей, но свойства логина будут показывать публичную роль базы данных для всех баз данных (она будет отмечена, и вы не сможете ее снять). Свойства публичной роли базы данных также не будут показывать никаких членов, и свойства пользователя базы данных также не будут показывать публичную роль. Из-за всего этого я не верю, что вы удалили пользователя из публичной роли.
Если вы хотите попробовать удалить и заново создать пользователя, вы можете сначала попробовать зайти в базу данных и просто удалить пользователя базы данных. Это оставит логин, в свойства которого вы можете зайти, и в разделе User Mapping не должно быть отмечено ни одной базы данных. Теперь вы можете проверить базу данных (потому что пользователь базы данных был удален) и выбрать любые нужные вам роли. Если это не сработает, вы также можете удалить логин вместе с пользователем базы данных, чтобы попытаться очистить все. Для последней проверки пользователя вы можете запустить этот SQL:
use database_name
exec sp_change_users_login 'Report'
Это покажет вам всех потерянных пользователей, что может означать, что проблема с вашим пользователем все еще существует. Обычно это можно исправить с помощью:
use database_name
exec sp_change_users_login 'Auto_Fix', 'username'
Чтобы попытаться закончить это, прежде чем это затянется, может быть что-то еще, что вызывает проблему с подключением для этого пользователя. Если ничего из этого не работает, можете ли вы опубликовать сообщение об ошибке, которое вы получаете при входе в систему?