it编程 > 数据库 > MsSqlserver

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

8人参与 2025-03-08 MsSqlserver

背景: 最近在迁移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)内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

SQLServer代理中如何给操作员发送事件警报邮件

03-08

SQL Server使用xp_readerrorlog命令查看错误日志

03-08

免密使用PostgreSQL数据库内置工具的两种方法

03-09

PostgreSQL有效地处理数据的加密和解密的常见方法

03-10

nginx中的proxy_set_header参数指令详解

03-06

SQL Server STUFF函数的用法及应用场景

03-10

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论