You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDBC无法登录LocalDB实例,但SSMS可正常登录的问题求助

解决JDBC使用SQL身份验证连接LocalDB失败的问题

看起来你遇到了SQL Server身份验证在JDBC中无法登录,但SSMS可以正常使用的典型问题,我帮你梳理几个关键排查点:

1. 确认SQL Server启用了混合身份验证模式

默认情况下,SQL Server可能仅开启Windows身份验证模式,即便你创建了SQL登录账号,服务器也不会接受SQL身份验证请求:

  • 打开SSMS,右键你的LocalDB服务器 → 属性 → 切换到安全性选项卡
  • 确认服务器身份验证选择的是「SQL Server和Windows身份验证模式」
  • 点击确定后,重启SQL Server服务(在服务管理器里找到SQL Server (MSSQLLocalDB)重启)

2. 检查登录账号的数据库映射与权限

虽然你能在SSMS登录,但可能该账号没有被正确映射到目标数据库TestBazyDanych:

  • 在SSMS中,展开安全性 → 登录名 → 右键doszke → 属性
  • 切换到用户映射选项卡,找到TestBazyDanych数据库,勾选左侧的复选框
  • 同时在下方的数据库角色成员身份中,至少勾选db_datareader和db_datawriter(测试阶段可以直接选db_owner)
  • 点击确定保存设置

3. 修正JDBC连接字符串(针对LocalDB的特殊情况)

LocalDB的连接方式和常规SQL Server实例略有不同,你当前用的localhost:1433可能不是正确的目标地址。试试改用LocalDB的实例名连接:

String url = "jdbc:sqlserver://(localdb)\\MSSQLLocalDB;databaseName=TestBazyDanych;user=doszke;password=doszke123";

如果你的LocalDB实例名不是默认的MSSQLLocalDB,可以打开命令提示符输入sqllocaldb info查看所有实例名称。

4. 检查账号状态是否正常

确认你的doszke账号没有被锁定或密码过期:

  • 在SSMS的登录名属性中,切换到状态选项卡
  • 确认「登录」选项是「启用」,且没有勾选「登录已锁定」
  • 同时检查「密码过期」选项是否被勾选,如果是,修改密码并取消该选项

额外小提示

你的代码中定义了userName和password变量但没有用到,虽然不影响功能,但可以优化连接方式,让代码更清晰:

String url = "jdbc:sqlserver://(localdb)\\MSSQLLocalDB;databaseName=TestBazyDanych";
try (Connection con = DriverManager.getConnection(url, userName, password)) {
    // ...
}

按照以上步骤逐一排查,应该能解决登录失败的问题。

内容的提问来源于stack exchange,提问作者Embid123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:44:07