У меня есть тестовая база данных, с которой у меня возникают проблемы с разрешениями.
Я не могу получить доступ к базе данных отчетов, и в справочной документации приложения сказано следующее:
Resolution:
1. Launch the SQL Server Management Studio and connect to the database server(s) hosting the Vision and Reporting Server databases.
2. Expand the security folder.
3. Select logins and right click on the <username> user and choose properties.
4. Click the User Mapping tab
5.Make sure the following databases are selected in the Users mapped to this Login:
ReportServer
ReportServerTempDB
Your Vision databases
This maps the login/user to the respective databases.
6. As you select each database (including your Vision database), select the db_owner role in the Database role membership for: section. You must select this option for each database.
Когда я делаю это, я получаю следующую ошибку:
"Create failed for user '<servername>\<username>'. User, group, or role '<servername>\<username>' already exists in the current database. (Microsoft SQL Server, Error: 15023)"
Я погуглил эту ошибку и попробовал следующую команду в каждой базе данных:
ALTER USER [<username>] WITH LOGIN = [<username>]
В сообщении указывалось, что команды завершились успешно, но я все еще получаю вышеуказанную ошибку при попытке сопоставить каждую базу данных, как указано выше.
Что мне не хватает?
За комментарий Кина (спасибо) я попробовал это: - Я щелкнул правой кнопкой мыши по пользователю и выбрал: Script Login As> Drop and Create To> New query window. - Я выполнил полученный запрос и попытался сопоставить роли пользователей, снова выбрав две другие базы данных и db_owner, но все равно получаю то же сообщение об ошибке, что и выше.
Мысли ??
Я использую Auto_Fix с
sp_change_users_login
в моем Dev среде , чтобы исправить такие проблемы (ошибка 15023). Избегайте использования Auto_Fix в ситуациях, чувствительных к безопасности.Также обратите внимание, что эта функция может быть удалена в будущей версии Microsoft SQL Server.
Другие ссылки:
источник
Это правильный подход.
В противном случае перейдите к:
Безопасность> Логины> (ваше имя пользователя)> Свойства> Отображение пользователей
и переназначить этого пользователя в базу данных, которую вы хотите.
Вы можете использовать следующий запрос в контексте вашей базы данных для проверки на наличие сирот:
источник
перейти в основную базу данных и удалить пользователя
источник