SQLServer错误:15023(创建对于用户失败)_数据库恢复到其他服务器

 更新时间:2025年03月08日 09:06:54   作者:清清竹林  
最近在迁移SQLServer数据库2019时,新建用户成功后,做用户映射失败, SQLServer 报错:用户、组或角色'XXX' 在当前数据库中已存在. 错误:15023.下面讲一下解决的方法

背景: 最近在迁移SQLServer数据库2019时,新建用户成功后,做用户映射失败。 SQLServer 报错:用户、组或角色'XXX' 在当前数据库中已存在. 错误:15023.

下面讲一下解决的方法。

分析:   

SQL Server中“登录”与“用户”的区别,“登录”用于用户身份验证,而数据库“用户”帐户用于数据库访问和权限验证。登录通过安全识别符 (SID) 与用户关联。

将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户。这种情况被称为存在“孤立用户”。

此时是不能通过新建登录或者是对同名登录授予对应数据库的“用户”权限来解决登录问题,因为SQL Server会报出“错误15023:当前数据库中已存在用户或角色”

简单理解:

数据库备份文件中已经包含了用户test,现在还原了数据库,然后发现现有数据库中没有test这个用户,想要新建一个test用户,作为该数据库的owner,便会出现这个问题。

可以理解为登录名和用户是两个不同的概念,虽然名称相同。在新建登录名的时候,如果不添加该数据库映射则不会报错。添加数据库映射相当于给该数据库添加一个同名用户。

但是已经存在了test这个用户了,所以此时会报错。

解决方法:

可以通过以下方法解决该问题。

1.新建一个test登录名,但是不要添加数据库映射。

2.使用脚本,将孤立用户test关联到登录名test上:

Use Northwind
Go
sp_change_users_login 'update_one', 'test', 'test'

其中Northwind为存在孤立用户的数据库,update_one是存储过程的参数,表示只处理一个用户,前一个test是“用户”,后一个test是“登录”,

以上这个SQL表示将服务器登录“test”与 Northwind 数据库用户“test”重新连接起来。这样就可以正常使用数据库了。
 

到此这篇关于SQLServer错误:15023(创建对于用户失败)_数据库恢复到其他服务器的文章就介绍到这了,更多相关SQLServer用户“xx”的创建失败(Microsoft.SqlServer.Smo)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SqlServer批量备份多个数据库且删除3天前的备份

    SqlServer批量备份多个数据库且删除3天前的备份

    这篇文章主要介绍了SqlServer批量备份多个数据库且删除3天前的备份,需要的朋友可以参考下
    2017-09-09
  • T-SQL篇如何防止SQL注入的解决方法

    T-SQL篇如何防止SQL注入的解决方法

    所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,对于这种行为,我们应该如何制止呢?本文将介绍一种方法,希望可以帮助有需要的朋友
    2012-11-11
  • SQL Server Bulk Insert 只需要部分字段时的方法

    SQL Server Bulk Insert 只需要部分字段时的方法

    上午在找Bulk Insert的资料看,还转了一篇。不巧今天下午就用上了,我遇到的需求是导出表A中的N个字段,然后导入到表B的N个字段当中。
    2011-10-10
  • SQLServer日志收缩的两种方法实现

    SQLServer日志收缩的两种方法实现

    日志文件撑爆了磁盘,log文件不能再存储新的transaction log,本文主要介绍了SQLServer日志收缩的两种方法实现,文中通过图文示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 详解partition by和group by对比

    详解partition by和group by对比

    这篇文章主要介绍了详解partition by和group by对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • sqlserver 动态创建临时表的语句分享

    sqlserver 动态创建临时表的语句分享

    开发业务需求,需要对一个表作数据分析,由于数据量较大,而且分析时字段会随条件相应变化而变化
    2012-01-01
  • SQL Server中Check约束的学习教程

    SQL Server中Check约束的学习教程

    这篇文章主要介绍了SQL Server中Check约束的学习教程,包括对启用Check约束来提升性能的介绍,需要的朋友可以参考下
    2015-12-12
  • sql2005 HashBytes 加密函数

    sql2005 HashBytes 加密函数

    在做项目的时候,在sql中使用了hashbytes函数,运用md5算法去加密一密码。
    2009-10-10
  • MS SQL Server游标(CURSOR)的学习使用

    MS SQL Server游标(CURSOR)的学习使用

    使用MS SQL Server这样久,游标一直没有使用过。以前都是使用WHILE循环加临时表来实现。刚刚联系个示例了解到游标概念与语法
    2014-06-06
  • 自增长键列统计信息的处理方法

    自增长键列统计信息的处理方法

    在这篇文章展示了SQL Server的查询优化器如何使用自增长键列统计信息,大家都知道SQLServer里每个统计信息对象都有关联的直方图直方图用多个步长描述指定列数据分布情况,需要的朋友可以参考下
    2015-07-07

最新评论