【问题标题】:can't change the password for a user无法更改用户的密码
【发布时间】:2011-06-19 06:37:03
【问题描述】:
我已下载数据库并将其附加到本地 sql 服务器,但我似乎无法更改数据库上现有用户的密码。
使用以下命令:
ALTER LOGIN [NotificationsUser] WITH PASSWORD = 'password';
我得到错误:
消息 15151,第 16 级,状态 1,第 1 行
无法更改登录
'NotificationsUser',因为它确实
不存在或您没有
权限。
这可能吗?我需要什么访问权限才能更改用户权限?
【问题讨论】:
标签:
sql-server
database
sql-server-2008
【解决方案1】:
如果您已将此数据库附加到本地 SQL 服务器,那么您需要做几件事:
如果您尚未这样做,请在您的 SQL 服务器上创建用户登录以匹配附加数据库中存在的登录。在附加数据库之前执行此操作更简单。但可以在附加数据库后完成。
由于新附加数据库中用户的 SID 与新创建的登录名不同,您需要使用 sp_change_users_login 存储过程来解决此问题。数据库用户实际上是孤立的。
例如,如果您有:
SQL登录:bob附加数据库用户:bob
在 SQL Management Studio 中为附加的数据库打开一个新查询,然后运行:
sp_change_users_login @action='report'
如果您的数据库中有“孤立”用户,那么您会看到如下所示的结果集:
用户名用户SID
鲍勃 0x57F6DFA5D5D7374A97769856E7CB5610
要将此用户重新连接到 SQL 登录,请执行:
sp_change_users_login @action='update_one',
@loginname='bob',
@usernamepattern='bob'
【解决方案2】:
我认为您将数据库用户与服务器登录混淆了。
您的数据库中可能有一个名为 NotificationUser 的用户,但这需要与服务器登录名相关联,这是您尝试使用脚本更改的对象。从不同服务器进行的数据库还原不会创建此服务器登录名,因此它很可能在您的服务器上不存在。更多info here