跳到主要内容
系统常识 SQL Server登录数据库用户

登录与数据库用户的映射关系怎么理解

SQL Server 的登录(服务器级)与数据库用户(库级)两层身份模型:为什么连接了却「进不了库」、映射怎么做、一个登录映射多库的情况。

发布于 2026/11/11 所属频道 SQL Server

结论先行

SQL Server 是两层身份:服务器级的登录(Login)决定「能不能连上这台引擎」,库级的数据库用户(Database User)决定「进了某个库之后能干什么」。两层之间靠映射衔接。所以「连上了却查不了库/报无权限」的根因几乎都是:登录建了,但这个库里的用户没映射或没授权。

两层模型

层 对象 存哪 决定什么
服务器级 登录(SQL 登录或 Windows 登录) master 库 能否连接到这台引擎
库级 数据库用户 各自的库 该库里的权限

一个登录要进 N 个库,就得在每个库里各映射一个用户。登录本身不携带库内权限,权限全在「用户 + 授权」上。

映射与授权(T-SQL)

-- 服务器级:建登录(master)
CREATE LOGIN AppSales WITH PASSWORD = N'强密码';
-- 库级:在 Sales 库里把该登录映射为库用户
USE Sales;
CREATE USER AppSales FOR LOGIN AppSales;
-- 授权
GRANT SELECT, INSERT ON dbo.Orders TO AppSales;

多库场景:每个用到的库都重复 USE 库; CREATE USER ...;。SSMS(SSMS 管理工具条目)对应:安全性 → 登录 → 某登录属性 → 映射页勾选目标库(可自动建同名用户)。

三类典型故障对应根因

现象 根因 解法
能连上、报「用户 X 映射到不存在的用户」 库里没映射该登录 建映射用户
能连上、能映射、但查表报无权限 用户没授权 GRANT 对应 DML
完全连不上 登录层就失败 登录不存在/密码错/被禁用

Windows 登录的特殊性

域账号/本机账号作为登录时,「映射」就是把该 Windows 身份关联到库用户;域组成员可映射组而不是逐个账号,成员变动不用改库(见域连接相关条目)。

SQL Server 2022 Developer、SQL Server 2019 Developer 条目环境下两层模型一致;建号最小权限的完整裁剪见「怎么建最小权限的应用数据库账户」相关条目,SQL Server 产品族条目 各引擎身份模型通用。

相关链接

本文内容基于公开资料整理,仅供参考;涉及授权与合规的操作请以厂商官方文档为准。

相关推荐下载

按本文主题匹配的官方原版镜像条目

配套 PE 工具

制作启动盘、备份数据、修复引导

其他常识文章

同一集合内的相近主题,按标签与关键词匹配