【问题标题】: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 服务器,那么您需要做几件事:

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

    2. 由于新附加数据库中用户的 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-20
        • 2022-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2017-05-04
        相关资源
        最近更新 更多