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

Java EE Web应用如何通过JDBC连接使用Windows身份验证的本地MS SQL Server

问题根因

你遇到的ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDataSource是Web应用运行时类路径下不存在mssql-jdbc驱动包导致,同时使用Windows身份认证连接SQL Server还有额外配置需要处理,按以下步骤操作即可解决:

1. 修复驱动类找不到问题

你虽然配置了Maven依赖,但需确认依赖被正确部署到Tomcat的类加载路径下:

  • 检查pom.xml中mssql-jdbc依赖的scope配置,不要添加<scope>provided</scope>,默认的compile scope会自动将依赖打包到Web应用的WEB-INF/lib目录下
  • 打开IDEA的File > Project Structure > Artifacts,找到当前Web应用对应的war/exploded包,查看右侧可用元素列表中的mssql-jdbc包,右键选择「Put into WEB-INF/lib」,保存配置后重启Tomcat
  • 也可以直接将mssql-jdbc-9.4.0.jre11.jar放到Tomcat安装目录的lib文件夹下,所有部署到该Tomcat实例的应用都可共享该驱动

2. 配置Windows身份认证依赖库

使用integratedSecurity=true参数时,需要额外配置对应位数的sqljdbc_auth.dll动态链接库:

  • 下载对应版本的微软SQL Server JDBC驱动压缩包,解压后找到和你系统位数(32位/64位)匹配的sqljdbc_auth.dll文件
  • 将该dll文件放到以下任意一个路径中:
    • JDK安装目录的bin文件夹
    • Tomcat安装目录的bin文件夹
    • Windows系统的C:\Windows\System32目录

3. 修正代码错误

你当前代码中静态字段上的@Resource注解无效,静态字段不支持资源注入,且你后续已手动实例化SQLServerDataSource,可直接删除该注解。另外不建议使用静态的Connection对象,会存在线程安全问题,连接用完后要及时关闭,参考修正代码:

public static boolean Connect(String dbName){
    String conStrUrl = "jdbc:sqlserver://DESKTOP-UF0PE6E\\SQLEXPRESS:57411;integratedSecurity=true;databaseName=" + dbName;
    try (Connection con = DriverManager.getConnection(conStrUrl)) {
        return true;
    } catch (SQLException e) {
        e.printStackTrace();
        return false;
    }
}

4. 确认SQL Server配置

  • 打开SQL Server配置管理器,进入「SQL Server网络配置 > 对应实例的协议」,确认TCP/IP协议已启用,且监听端口和你代码中配置的57411一致
  • 确认SQL Server已开启Windows身份认证模式,且允许远程连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:54:03