使用ALTER LOGIN更改用户自己的密码

333*_*Mhz 29 sql-server

我有一个运行以下的存储过程:

'ALTER LOGIN ' + @Login + ' WITH PASSWORD = ''' + @Password + ''''
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

无法更改登录'aUser',因为它不存在或您没有权限.

但是,如果我将用户添加到SysAdmin角色,那么它就会成功.如果我从SysAdmin中删除用户,我会再次收到错误消息,因此它似乎是用户权限.

问题是,我需要用户能够更改自己的密码,并且ALTER LOGIN命令似乎不允许这样做,即使MSDN说:

委托人可以为自己的>登录更改密码,默认语言和默认数据库.

有人有任何想法吗?

Dam*_*ver 50

我认为对于没有的用户执行普通密码更改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
Run Code Online (Sandbox Code Playgroud)