我有一个运行以下的存储过程:
'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)