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

Spring Boot集成Atomikos连接Microsoft SQL Server出现TCP/IP连接失败

问题排查及修复方案

核心问题

从报错日志可以明确判定:JDBC驱动将完整的JDBC连接串当成了数据库主机地址尝试连接,属于配置逻辑错误。
你当前getDataSource方法的server参数大概率传入的是完整的jdbc:sqlserver://127.0.0.1;databaseName=sample;串,但SQLServerXADataSource的serverName属性仅需要填写纯主机IP/域名,不能带JDBC协议前缀、端口、库名等信息,同时你还缺失了databaseName的XA属性配置。

修复步骤

1. 修正XA数据源配置

拆分连接参数,修改getDataSource方法的配置逻辑:

public AtomikosDataSourceBean getDataSource(String userName, String password, String server, int port, String databaseName, String resourceName) {
        AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean();
        dataSource.setUniqueResourceName(resourceName);
        dataSource.setXaDataSourceClassName("com.microsoft.sqlserver.jdbc.SQLServerXADataSource");
        Properties xaProperties = new Properties();
        xaProperties.setProperty("user", userName);
        xaProperties.setProperty("password", password);
        // server仅传入纯IP/域名,例如127.0.0.1
        xaProperties.setProperty("serverName", server);
        // 显式指定端口,默认端口为1433
        xaProperties.setProperty("portNumber", String.valueOf(port));
        // 补充数据库名配置
        xaProperties.setProperty("databaseName", databaseName);

        dataSource.setXaProperties(xaProperties);
        dataSource.setMaxPoolSize(10);
        return dataSource;
}

如果你的SQL Server使用了非默认实例、SSL加密等配置,还需要补充对应属性:

  • 实例名配置:xaProperties.setProperty("instanceName", "你的实例名")
  • 测试环境关闭SSL验证:xaProperties.setProperty("encrypt", "false")

2. 本地连通性校验

先通过命令行工具确认端口可连通:

telnet 127.0.0.1 1433

如果连接失败,检查Windows防火墙是否开放1433端口入站规则,以及SQL Server服务是否正常启动。

3. 开启SQL Server XA事务支持

SQL Server默认未开启XA事务能力,需要补充如下配置:

  • 在SQL Server的master库执行安装路径下的\Microsoft SQL Server\对应版本号\Tools\Binn\xa_install.sql脚本
  • 给数据库用户sampleUser授予SqlJDBCXAUser角色权限
  • 进入Windows组件服务>本地DTC>属性>安全设置,勾选「启用XA事务」选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:39:02