使用Apache JMeter(Java 22)连接SQL Server 2012数据库遇连接异常
解决JMeter连接SQL Server 2012的TCP/IP连接异常
核心问题定位
从异常信息看,连接字符串格式存在明显错误:192.168.0.107,1434的写法混淆了SQL Server的实例端口与主机地址,同时又指定端口1433,导致连接逻辑冲突。
分步解决方案
1. 修正连接字符串格式
SQL Server JDBC连接字符串有两种标准写法,二选一即可:
- 默认实例(端口1433):
jdbc:sqlserver://192.168.0.107:1433;databaseName=你的数据库名;encrypt=false;trustServerCertificate=true - 命名实例(指定端口):
先确认实例的TCP端口(见步骤2),再用格式:
或用实例名写法:jdbc:sqlserver://192.168.0.107:实际端口号;databaseName=你的数据库名;encrypt=false;trustServerCertificate=true
注意:不要同时在主机后加逗号端口又单独指定port参数,避免重复冲突。jdbc:sqlserver://192.168.0.107\实例名;databaseName=你的数据库名;encrypt=false;trustServerCertificate=true
2. 确认SQL Server的TCP/IP配置
- 打开SQL Server配置管理器,展开
SQL Server网络配置,找到目标实例对应的TCP/IP协议,确保状态为已启用。 - 双击
TCP/IP切换到IP地址标签:- 找到对应
192.168.0.107的IP条目,设置已启用为是,记录TCP端口的值(默认实例为1433,命名实例可能是动态端口,建议改为固定端口方便连接)。 - 拉到最底部,设置
IPAll的TCP端口为上述记录的端口号,重启SQL Server服务。
- 找到对应
3. 验证网络连通性
在JMeter所在机器上,用以下命令测试端口是否可达:
- Windows命令提示符:
telnet 192.168.0.107 你的端口号 - PowerShell:
Test-NetConnection 192.168.0.107 -Port 你的端口号
如果连接失败,检查数据库服务器防火墙是否开放对应端口,或网络路由是否正常。
4. 适配Java版本与JDBC驱动
Java 22版本较新,与老旧的SQL Server 2012兼容性有限:
- 建议降级Java版本到Java 17(LTS版本,兼容性更稳定),或使用最新版的Microsoft JDBC Driver for SQL Server(至少8.4以上版本,尝试适配Java 22)。
- 将下载的JDBC驱动包(如
mssql-jdbc-12.4.2.jre11.jar)放到JMeter安装目录的lib文件夹下,重启JMeter。
5. 简化连接参数
去掉不必要的sslProtocol=TLSv1.2参数,SQL Server 2012对TLS 1.2的支持需要额外配置,直接关闭加密更稳妥:
;encrypt=false;trustServerCertificate=true
内容的提问来源于stack exchange,提问作者Nilesh Patil
相关产品推荐
相关产品推荐

