SQLServer:配置安全性/登录名/用户映射/权限时出现的【用户映射无法保存问题】或【错误15023:当前数据库中已存在用户或角色”】

这是在一次用户权限分配的过程中出现的两个问题,经过各种操作尝试,解决后记录。
…………………………………………………………………………………

问题一:用户映射无法保存问题

问题描述:
当配置用户权限时:
打开安全性–登录名–右键用户选择属性–选择用户映射
此时是为了给用户分配访问数据库的权限,在出现的界面中勾选相应的数据库,此时分配完点击确定后,会给予用户相应的访问数据库的权限;
但因为某些未知而又神秘的因素(博主现在也不知道),会出现勾选确定后不提示错误,但是再打开界面,数据库仍处于未勾选状态,没有权限访问(已经排除了用户正在登陆或用户更改名称后重名的情况)

如图
解决方案:
打开需要分配访问权限的数据库,按照下图点击:权限–浏览–选择用户–确认
在下方的用户权限界面找到:选择,勾选确定,即可赋予用户访问数据库权限(其他权限同理)
如图二

问题二:“错误15023:当前数据库中已存在用户或角色”

问题描述:
先说明导致本问题的情况有很多种,具体原因稍后解释。
博主遇到的情况是下面这种:已有一个用户A,因为权限问题考虑创建了用户A1,同步权限后,删除了用户A,将A1命名为A。
单纯的博主以为A1用户可以继承A的衣钵继续走下去,没想到它死掉了。当博主想把A访问数据库的权限赋给更名为A(原A1用户)的用户时,出现了报错----- “错误15023:当前数据库中已存在用户或角色”

问题出现的原理:
这个天杀的错误经常出现的原因是这样的:
SQL中,“登陆”和“用户”是两个概念,“登陆”用于用户身份验证(像是扇门),而“用户”用于数据库访问和权限认证(像是一把钥匙);
“登陆”通过安全识别符(SID)与“用户”关联,当数据库恢复到其他服务器,或者是你建立了更新用户名操作时(像是你把住户都叫来,收了所有的钥匙随机发了一遍)
此时是不能通过新建登录或者是对同名登录授予对应数据库的“用户”权限来解决登录问题,这就出现了报错–“错误15023:当前数据库中已存在用户或角色”(进门告诉你已经有钥匙能进这个门了,但不是你这把,你也不能再配一把新的)(因为你不能重新给你加建一个门,我房子已经有门了!也不能重新再给进不去门的人发一把钥匙,我就收上来了这么多,都随机发下去了!)
也就是说,别想了兄弟,重新创建登录和对同名的登录授权对应数据库的“用户”都是不可能的 博主刚试过

解决方案:
新建查询,输入以下代码

Use 数据库名

go
sp_change_users_login ‘update_one‘, ‘用户′, ‘登录′

上述代表调用了系统存储过程sp_change_users_login;
update_one是存储过程的参数;
语句表示将服务器“登录”与 数据库“用户”重新连接起来,也就是把钥匙分配给对应的门,这样就能正常使用数据库了。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值