none
如何解决SQL Server 2008的错误:15023 RRS feed

  • 问题

  • 大家好,

    我所在的课题组集体开发的一个需要使用数据库的程序,各个成员之间经常需要用到数据库的备份和还原,采用.bak文件来交换数据库数据。我们在开发中共同定义了一个用户名,这个用户名用于访问数据库中的数据,但用其他成员的.bak文件还原我机器上的数据库后,就出现这个用户登录出错的问题。我想将这个公共用户名改回来,方法和错误提示如图所示:

    4dcad这个用户名是公共的用户名,数据库还原后也是存在的,只是在用户映射中对被还原的数据库的db_owner不再是勾选状态。

    我登录SQL Sever时采用的是Window身份验证,h-PC是为的计算机名称,Administrator是Windows的登录名

    超级用户sa的密码我也忘记了。

    2014年10月14日 13:11

答案

  • 从名称从名称上看, 4dcad 是一个 SQL 登陆, h-pc-Administrator 是一个Windows 登陆,所以无法 mapping
    2014年10月15日 1:16
  • 你可以查查,看他们的 type 是否确实不一样

    select * from xx.sys.database_principals where name = '4dcad'
    select * from sys.server_principals where name = 'h-PC\Administrator'

    另外,sp_change_users_login 作用的目标是 SQL Server 合建名,也就是说,如果你查到的 type 都相同,但不是 S 的话,这个存储过程也无能为力

    当然,从错误提示来看,提示的是 h-PC\Administrator 找不到,那说明是两个的 type 不一样,否则应该先报 4dcad找不到

    2014年10月15日 1:22

全部回复

  • Can't use sp_change_users_login to map sqllogins, it's for mapping sql login to db user only.
    2014年10月14日 14:50
  • 从名称从名称上看, 4dcad 是一个 SQL 登陆, h-pc-Administrator 是一个Windows 登陆,所以无法 mapping
    2014年10月15日 1:16
  • 你可以查查,看他们的 type 是否确实不一样

    select * from xx.sys.database_principals where name = '4dcad'
    select * from sys.server_principals where name = 'h-PC\Administrator'

    另外,sp_change_users_login 作用的目标是 SQL Server 合建名,也就是说,如果你查到的 type 都相同,但不是 S 的话,这个存储过程也无能为力

    当然,从错误提示来看,提示的是 h-PC\Administrator 找不到,那说明是两个的 type 不一样,否则应该先报 4dcad找不到

    2014年10月15日 1:22
  • 参照:2005版本实现方法
    如何在 SQL Server 2005 实例之间传输登录和密码 
    http://support.microsoft.com/kb/918992/zh-cn

    Roy Wu(吳熹Blog)(微博)

    2014年10月20日 7:25
    版主