登录RDS SQL Server实例时报错“cannot open user default database.Login failed”

问题描述

云数据库RDS SQL Server实例登录报错,报错如下:

cannot open user default database.Login failed.

image

问题原因

RDS SQL Server登录用户对应的默认数据库下没有关联的用户。

SELECT 
 sp.name AS LoginName,
 sl.default_database_name AS DefaultDatabase
FROM 
 sys.server_principals sp
JOIN 
 sys.sql_logins sl ON sp.principal_id = sl.principal_id where sp.name='jmuser03'

如下示例,jmuser03用户对应的默认数据库为jmdb02,如果此时jmdb02数据库下没有关联的用户,则无法登录,就会报此错误。

image

通过SQL检查是否有此登录用户关联的用户。

USE jmdb02; -- 将[jmdb02]替换为实际的数据库名称
GO
SELECT 
    sp.name AS LoginName,
    dp.name AS UserName
FROM 
    sys.server_principals sp
JOIN 
    sys.database_principals dp ON dp.sid = sp.sid
WHERE 
    sp.type IN ('S', 'U', 'G')  -- S=SQL Login, U=Windows User, G=Windows Group
AND 
    sp.name = 'jmuser03'; -- 将[jmuser03]替换为实际的数据库名称

image

解决方案

在此数据库下为登录用户创建一个关联的用户。

USE jmdb02; -- 将[jmdb02]替换为实际的数据库名称
GO
CREATE USER jmuser03 -- 将[jmuser03]替换为实际的想创建的用户名
FOR LOGIN jmuser03; -- 将[jmuser03]替换为实际的登录用户名
GO

相关文档

如何登录到RDS SQL Server数据库,请参见连接SQL Server实例

适用于

云数据库RDS SQL Server