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;

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

相关推荐
Gauss松鼠会几秒前
GaussDB数据库统计信息自动收集机制
数据库·经验分享·sql·oracle·gaussdb
许彰午7 分钟前
# Oracle shutdown immediate关不掉——一次排坑实录
数据库·oracle
消失的旧时光-194310 分钟前
SQL 怎么学(工程实战总纲|用一套用户模型打穿全流程)
java·数据库·sql
abc123456sdggfd15 分钟前
如何统一SQL视图报错信息_使用异常处理机制包装视图
jvm·数据库·python
qq_4609784015 分钟前
如何处理SQL循环逻辑_探索递归CTE实现复杂计算
jvm·数据库·python
码农阿豪16 分钟前
Django接金仓数据库:我踩过的坑和填坑指南
数据库·python·django
疯狂成瘾者16 分钟前
Prompt分层策略
前端·数据库·prompt
2401_8314194417 分钟前
C++如何利用YAML存储复杂的数学矩阵_Eigen库结合yaml-cpp用法【实战】
jvm·数据库·python
2401_8987176618 分钟前
如何进行SQL数学计算_运用ROUND与CEIL处理数值精度
jvm·数据库·python
2501_9012005319 分钟前
Pytest 实现两级参数化:让服务名依赖于应用名的灵活测试方案
jvm·数据库·python