无法更改用户的密码

时间:2011-06-18 22:07:01

标签: sql-server database sql-server-2008

我已下载数据库并将其附加到我的本地sql server,但是我似乎无法更改db上现有用户的密码。

使用以下命令:

ALTER LOGIN [NotificationsUser] WITH PASSWORD = 'password';

我收到错误:

  

Msg 15151,Level 16,State 1,Line 1   无法更改登录信息   'NotificationsUser',因为它确实如此   不存在或你没有   权限。

这可能吗?我还需要哪些访问权限才能更改用户权限?

2 个答案:

答案 0 :(得分:1)

我认为您将数据库用户与服务器登录混淆。

您的数据库中可能有一个名为NotificationUser的用户,但这需要与服务器登录相关联,这是您尝试使用脚本更改的对象。从其他服务器恢复数据库将不会创建此服务器登录,因此很可能它不存在于您的服务器上。更多info here

答案 1 :(得分:1)

如果您已将此数据库附加到本地SQL服务器,则需要执行以下操作:

  1. 如果您还没有这样做,请在SQL服务器上创建用户登录以匹配附加数据库中存在的用户登录。在附加数据库之前执行此操作更简单。但是可以在附加数据库之后完成。

  2. 由于新附加数据库中用户的SID与新创建的登录名不同,因此您需要使用sp_change_users_login存储过程解决此问题。数据库用户实际上是孤儿。

  3. 例如,如果你有:

    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'