SQL Server创建关联用户报错求助:Error 15063、15007及登录失败问题
问题排查与解决步骤
错误15063:登录名已关联不同用户名的账号
原因:当你把Test设为数据库所有者时,SQL Server会自动将Test登录名映射到数据库的dbo用户(数据库所有者默认对应dbo)。此时手动创建名为Test的用户,会触发冲突——同一个登录名不能同时映射到两个不同的数据库用户(dbo和Test)。
解决方法:
- 若无需显式Test用户,直接用自动映射的dbo用户即可(所有者默认拥有db_owner权限)。
- 若必须创建Test用户,先解除Test与dbo的关联再操作:
-- 切换到目标数据库 USE [你的数据库名]; -- 将数据库所有者临时改为其他有权限的登录名(比如sa) ALTER AUTHORIZATION ON DATABASE::[你的数据库名] TO [sa]; -- 创建Test用户并关联登录名 CREATE USER [Test] FOR LOGIN [Test] WITH DEFAULT_SCHEMA=[dbo]; -- 分配db_owner权限 ALTER ROLE [db_owner] ADD MEMBER [Test]; -- 可选:将数据库改回Test为所有者 ALTER AUTHORIZATION ON DATABASE::[你的数据库名] TO [Test];
错误15007:Test1不是有效登录或无权限
原因:要么Test1登录名未在SQL Server实例上创建,要么当前操作账号没有权限将登录名映射到数据库用户。
解决方法:
- 先在服务器级别创建Test1登录名:
CREATE LOGIN [Test1] WITH PASSWORD=N'你的密码', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF; ALTER SERVER ROLE [public] ADD MEMBER [Test1];
- 确保使用拥有
ALTER ANY USER权限的账号操作(比如sa或sysadmin角色账号)。
DSN登录失败问题
原因:Test登录名在目标数据库中无对应用户映射、权限不足,或SQL Server未开启混合身份验证模式。
解决步骤:
- 开启混合身份验证模式:
打开SSMS,右键实例→属性→安全性→选择「SQL Server和Windows身份验证模式」→重启SQL服务。 - 确认Test登录名在目标数据库的映射与权限:
-- 切换到目标数据库检查 USE [你的数据库名]; SELECT * FROM sys.database_principals WHERE name IN ('Test', 'dbo'); SELECT * FROM sys.server_principals WHERE name='Test'; -- 若无映射,执行以下语句 CREATE USER [Test] FOR LOGIN [Test] WITH DEFAULT_SCHEMA=[dbo]; ALTER ROLE [db_owner] ADD MEMBER [Test];
- 配置DSN时,确认Test的密码正确、数据库名称填写无误。
避坑版完整操作流程
- 创建Test登录名:
CREATE LOGIN [Test] WITH PASSWORD=N'你的密码', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF; ALTER SERVER ROLE [public] ADD MEMBER [Test];
- 创建两个以Test为所有者的数据库:
CREATE DATABASE [DB1] WITH OWNER=[Test]; CREATE DATABASE [DB2] WITH OWNER=[Test];
- 配置数据库权限(所有者默认拥有db_owner权限,无需额外创建用户):
若需显式Test用户,参考错误15063的解决代码调整。 - 创建DSN:选择SQL Server身份验证,输入Test账号密码,选择对应数据库测试连接。
内容的提问来源于stack exchange,提问作者fsumathguy
相关产品推荐
相关产品推荐

