我已下载数据库并将其附加到我的本地sql server,但是我似乎无法更改db上现有用户的密码。
使用以下命令:
ALTER LOGIN [NotificationsUser] WITH PASSWORD = 'password';
我收到错误:
Msg 15151,Level 16,State 1,Line 1 无法更改登录信息 'NotificationsUser',因为它确实如此 不存在或你没有 权限。
这可能吗?我还需要哪些访问权限才能更改用户权限?
答案 0 :(得分:1)
我认为您将数据库用户与服务器登录混淆。
您的数据库中可能有一个名为NotificationUser的用户,但这需要与服务器登录相关联,这是您尝试使用脚本更改的对象。从其他服务器恢复数据库将不会创建此服务器登录,因此很可能它不存在于您的服务器上。更多info here
答案 1 :(得分:1)
如果您已将此数据库附加到本地SQL服务器,则需要执行以下操作:
如果您还没有这样做,请在SQL服务器上创建用户登录以匹配附加数据库中存在的用户登录。在附加数据库之前执行此操作更简单。但是可以在附加数据库之后完成。
由于新附加数据库中用户的SID与新创建的登录名不同,因此您需要使用sp_change_users_login
存储过程解决此问题。数据库用户实际上是孤儿。
例如,如果你有:
SQL登录:bob
附加数据库用户:bob
在SQL Management Studio中为附加的数据库打开一个新查询,然后运行:
sp_change_users_login @action='report'
如果您的数据库中有“孤儿”用户,那么您将看到如下结果集:
UserName UserSID bob 0x57F6DFA5D5D7374A97769856E7CB5610
要将此用户重新连接到SQL登录,请执行:
sp_change_users_login @action='update_one',
@loginname='bob',
@usernamepattern='bob'