Eclipse中AWS Explorer可连SQL Server但JDBC代码连接登录失败如何解决
问题根因与解决方案
核心错误点:你使用DriverManager.getConnection的参数传递方式有误。该方法的三参数重载getConnection(String url, String user, String password)要求第二个参数直接传入用户名纯文本、第三个参数直接传入密码纯文本,不需要加User=、Password=前缀。你当前传递的第二个参数是"User=sa",导致JDBC驱动把整个字符串当做了用户名去校验,因此抛出用户User=sa登录失败的错误。
修复后的代码示例
DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); // 直接传入纯用户名和纯密码,不要加参数前缀 conn = DriverManager.getConnection("jdbc:sqlserver://axxx.cxxxxt.us-east-1.rds.amazonaws.com", "sa", "XXXXXXX");
如果偏好将所有参数拼接在URL中,也可以使用单参数重载写法:
// 所有参数写在URL中时才需要添加key=前缀 String url = "jdbc:sqlserver://axxx.cxxxxt.us-east-1.rds.amazonaws.com;user=sa;password=XXXXXXX;"; conn = DriverManager.getConnection(url);
补充校验点
- 修复参数后如果依然报错,先确认RDS实例的SQL Server认证模式已经开启混合认证(SQL Server和Windows认证模式),避免仅Windows认证导致SQL账号无法登录
- 确认填写的sa账号密码和SSMS登录时使用的凭证完全一致,注意大小写敏感问题
- 高版本SQL Server JDBC驱动默认要求SSL加密,若连接报错可在URL后追加
;encrypt=true;trustServerCertificate=true;适配AWS RDS的证书配置
内容的提问来源于stack exchange,提问作者David S.
相关产品推荐
相关产品推荐

