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)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis的动态sql详解(精)

    mybatis的动态sql详解(精)

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下
    2015-08-08
  • 使用SQL语句创建触发器的实例

    使用SQL语句创建触发器的实例

    触发器 是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。存储过程可以通过语句直接调用,而 触发器主要是通过事件进行触发而被执行的,这篇文章主要介绍了使用SQL语句创建触发器的实例,需要的朋友可以参考下
    2023-06-06
  • 实现按关健字模糊查询,并按匹配度排序的SQL语句

    实现按关健字模糊查询,并按匹配度排序的SQL语句

    SQL语句实现按关健字模糊查询,并按匹配度排序
    2009-09-09
  • SQL Server的子查询详解

    SQL Server的子查询详解

    子查询是嵌套在SELECT、INSERT、UPDATE、DELETE语句中或另一个子查询中的查询。可以在允许表达式的任何位置使用子查询,本文介绍了SQL Server的子查询,需要的朋友可以参考阅读
    2023-04-04
  • SQL语句之Union和Union All的用法

    SQL语句之Union和Union All的用法

    本文主要讲解SQL语句之Union和Union All的用法,比较实用,希望能给大家做一个参考。
    2016-06-06
  • 浅谈SQL语句中WHERE 1=1的作用

    浅谈SQL语句中WHERE 1=1的作用

    本文主要介绍了浅谈SQL语句中WHERE 1=1的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • SQL Server 压缩日志与减少SQL Server 文件大小的方法

    SQL Server 压缩日志与减少SQL Server 文件大小的方法

    这篇文章主要为大家描述的是实现SQL Server 压缩日志与SQL Server 文件大小的实际操作步骤,在此实际操作中我们要按步骤一步一步的进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库
    2014-07-07
  • 对SQL Server中敏感数据进行加密解密的操作方法

    对SQL Server中敏感数据进行加密解密的操作方法

    近几年有不少关于个人数据泄露的新闻(个人数据通常包含如姓名、地址、身份证号码、财务信息等),给事发公司和被泄露人都带来了不小的影响,所以本文给大家介绍了如何对SQL Server中的敏感数据进行加密解密,需要的朋友可以参考下
    2024-05-05
  • SQL Server中OPENJSON + WITH 解析JSON数据的示例

    SQL Server中OPENJSON + WITH 解析JSON数据的示例

    文章介绍SQL Server中OPENJSON函数,通过WITH子句将JSON解析为关系型数据表,支持对象、数组及嵌套结构处理,结合CROSS APPLY实现多层展开,适用于JSON数据到表格的转换,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • sqlserver 函数、存储过程、游标与事务模板

    sqlserver 函数、存储过程、游标与事务模板

    SQL 函数、存储过程、游标与事务模板,学习sqlserver的朋友很多情况下都需要用得到。
    2010-08-08

最新评论