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