sql server 从库创建的用户名登录后访问提示数据库无权限

在主副本库创建登录名并且用户映射赋权指定的数据库权限,副副本库也创建登录名,主副本有权限访问数据库的权限,但是副副本没有权限访问数据库。

解决方案:

检查数据库用户是否映射到登录名

如果数据库用户已存在,但未正确映射到登录名,也会导致此错误。

  • 在目标数据库上运行以下查询,检查用户是否映射到登录名:

    USE [your_database_name];

  • SELECT name, sid FROM sys.database_principals WHERE name = 'your_user_name';

  • 在服务器级别运行以下查询,检查登录名的 SID:

    SELECT name, sid FROM sys.sql_logins WHERE name = 'your_login_name';

如果两者的 SID 不一致,说明用户未正确映射到登录名。从库删除 login名后,通过指定sid(和主库的sid一样)重建:

drop login login_name;

GO

CREATE LOGIN login_name WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

重建之后密码可以不对,在修改密码即可。

相关推荐
培小新21 小时前
MySQL 集群技术(环境+一主二从配置)
数据库·mysql
ruanyongjing21 小时前
Spring TransactionTemplate 深入解析与高级用法
java·数据库·spring
fengxin_rou21 小时前
[Redis从零到精通|第六篇]:Redis的主从同步
java·数据库·redis·缓存
java干货21 小时前
拒绝全表扫描灾难:用 SSCAN 安全遍历 Redis 亿级 Set 集合
数据库·redis·安全
刘一说21 小时前
使用 CLion 搭建 Redis 6.x 源码调试环境:从零开始的完整指南
数据库·redis·缓存
人道领域21 小时前
苍穹外卖:菜品分页查询与删除功能(保姆级详解)
java·开发语言·数据库·后端·spring
Navicat中国21 小时前
利用 PostgreSQL 的强大力量:Supabase 简介
数据库·postgresql·navicat·supabase
yqzyy21 小时前
Redis 设置密码无效问题解决
数据库·redis·缓存
huangliang07031 天前
oracle使用模版创建分区表
数据库·oracle
江不清丶1 天前
Kafka消息积压排查与治理:从应急处理到长期优化
数据库·kafka·linq