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;

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

相关推荐
TDengine (老段)11 分钟前
直播回放 | IDMP 无问智推技术详解
数据库·人工智能·物联网·ai·时序数据库·tdengine·涛思数据
DemonAvenger14 分钟前
Redis内存管理与优化策略:避免OOM的最佳实践
数据库·redis·性能优化
pandarking18 分钟前
[CTF]攻防世界:fakebook (sql注入)
数据库·sql·web安全·网络安全
T1ssy22 分钟前
深入解析Redis三大缓存问题:穿透、击穿、雪崩及解决方案
数据库·redis·缓存
都是蠢货22 分钟前
mysql中null是什么意思?
android·数据库·mysql
爱技术的阿呆25 分钟前
MySQL的表连接及案例演示
数据库·sql
光羽隹衡28 分钟前
SQL的导入导出数据和查询
数据库·sql
爱技术的阿呆28 分钟前
MySQL子查询及其案例
数据库·mysql
..空空的人42 分钟前
C++基于protobuf实现仿RabbitMQ消息队列---技术认识2
服务器·数据库·c++·网络协议·gtest·异步·protobuf