SQLServer 报错:用户组或角色'XXX' 在当前数据库中已存在. 错误:15023解决方法
Posted 春之野草,秋之落叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer 报错:用户组或角色'XXX' 在当前数据库中已存在. 错误:15023解决方法相关的知识,希望对你有一定的参考价值。
分析:
将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户。
这种情况被称为存在“孤立用户”。此时是不能通过新建登录或者是对同名登录授予对应数据库的“用户”权限来解决登录问题,
因为SQLServer会报出“错误15023:当前数据库中已存在用户或角色”,
简单理解:
数据库备份文件中已经包含了用户test,现在还原了数据库,然后发现现有数据库中没有test这个用户,想要新建一个test用户,作为该数据库的owner,便会出现这个问题。
可以理解为登录名和用户是两个不同的概念,虽然名称相同。在新建登录名的时候,如果不添加该数据库映射则不会报错。添加数据库映射相当于给该数据库添加一个同名用户。
但是已经存在了test这个用户了,所以此时会报错。
解决方法:
可以通过以下方法解决该问题。
1.新建一个test登录名,但是不要添加数据库映射。
2.使用脚本,将孤立用户test关联到登录名test上:
Use [数据库名]
go
sp_change_users_login \'update_one\', \'test\', \'test\'
sqlserver迁移数据
将sqlserver2000的备份数据迁移到sqlserver2005时使用数据库对应的用户video315无法访问指定的数据库
报错:
用户、组或角色 ‘video315‘ 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)
参考:https://www.cnblogs.com/douxuyao/p/3530052.html
查看sqlserver的安全性-----》登录名中video315的属性发现用户对应的数据库是没有授权的,手动授权无法生效
在新建的查询中执行
use v315db
go
sp_change_users_login ‘update_one‘,‘video315‘,‘video315‘ 之后再次测试可以使用用户video315访问对应的数据库v315db了
操作完成之后查看用户授权是更新的
以上是关于SQLServer 报错:用户组或角色'XXX' 在当前数据库中已存在. 错误:15023解决方法的主要内容,如果未能解决你的问题,请参考以下文章
用户组或角色 'zgb' 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)
SQL 2008R2问题:用户组或角色'XXX'在当前数据库中已存在?