У меня есть пользователь в моей базе данных, у которого нет связанного входа. Кажется, он был создан без входа.
Всякий раз, когда я пытаюсь подключиться к базе данных с этим пользователем, я получаю следующую ошибку:
Msg 916, Level 14, State 1, Line 1
The server principal "UserName" is not able to access the database
"DatabaseName" under the current security context.
Я бы хотел указать логин для этого пользователя, чтобы я мог использовать его для доступа к базе данных. Я попробовал следующий script, чтобы связать логин с пользователем.
USE [DatabaseName]
ALTER USER [UserName]
WITH LOGIN = [UserName]
Но это дает мне следующую ошибку:
Msg 33016, Level 16, State 1, Line 2
The user cannot be remapped to a login. Remapping can only be done for users
that were mapped to Windows or SQL logins.
Можно ли каким-либо образом назначить логин для этого пользователя? Я бы не стал начинать с нуля, потому что у этого пользователя есть много разрешений, которые нуждаются в настройке снова.
Изменить: в ответ на вопрос Филиппа Келли, вот что я получаю, когда я запускаю select * from sys.database_principals where name = 'username'
.
Извините за размер изображения, вам нужно будет открыть его на новой вкладке, чтобы правильно просмотреть его.
Edit2:
Хорошо, я сбросил существующий логин, как было предложено gbn, и я использую следующий script для создания нового LOGIN с тем же SID, что и пользователь.
CREATE LOGIN [UserName]
WITH PASSWORD=N'Password1',
DEFAULT_DATABASE=[DatabaseName],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF,
SID=0x0105000000000009030000001139F53436663A4CA5B9D5D067A02390
Теперь, давая мне следующее сообщение об ошибке, похоже, что SID слишком длинный для поля LOGIN SID.
Msg 15419, Level 16, State 1, Line 1
Supplied parameter sid should be binary(16).
Неужели я за рулем без весла?