Подтвердить что ты не робот

Используйте ALTER LOGIN, чтобы изменить собственный пароль пользователя

У меня есть хранимая процедура, которая запускает следующее:

'ALTER LOGIN ' + @Login + ' WITH PASSWORD = ''' + @Password + ''''

Появляется следующее сообщение об ошибке:

Невозможно изменить логин "aUser", потому что он не существует или у вас нет разрешения.

ОДНАКО, если я добавлю пользователя в роль SysAdmin, он будет успешным. Если я удалю пользователя из SysAdmin, я снова получу сообщение об ошибке, поэтому он будет прав пользователя.

Проблема в том, что мне нужно, чтобы пользователи могли изменять свои собственные пароли, и команда ALTER LOGIN, похоже, не позволяет этого, хотя MSDN говорит:

Директор может изменить пароль, язык по умолчанию и базу данных по умолчанию для своего собственного > входа.

У кого-нибудь есть идеи?

4b9b3361

Ответ 1

Я думаю, чтобы выполнить обычное смену пароля для пользователя, у которого нет ALTER ANY LOGIN, вы также должны указать параметр OLD_PASSWORD. Это будет соответствовать примеру старой sp_password хранимой процедуры:

В следующем примере показано, как использовать ALTER LOGIN для изменения пароля для входа в систему Victoria от B3r1000d # 2-36 до V1cteAmanti55imE. Это предпочтительный метод. Пользователь Victoria может выполнить эту команду без дополнительных разрешений. Для других пользователей требуется разрешение ALTER ANY LOGIN:

ALTER LOGIN Victoria WITH 
     PASSWORD = 'V1cteAmanti55imE' 
     OLD_PASSWORD = 'B3r1000d#2-36';
GO

Ответ 2

Вы можете запустить приложение как пользователь с достаточными правами. Для этого вы должны создать учетную запись службы для приложения в SQL Server, а затем запустить приложение в качестве этого пользователя.

Однако было бы лучше создать таблицу Users для вашего приложения и управлять этими данными там, а не позволять вашим пользователям иметь прямой доступ к изменению логинов.