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

使用Logstash同步SQLServer至Elasticsearch时JDBC连接端口错误

解决Logstash同步SQL Server到Elasticsearch的端口无效错误

你的问题核心很清晰——JDBC连接字符串的格式不符合SQL Server的规范,导致驱动错误地把1433/DB_name当成了完整的端口号(端口只能是纯数字),这才抛出了"The port number 1433/DB_name is not valid"的错误。

错误根源

你当前的连接字符串写法是:

jdbc:sqlserver://xxx.xxx.x.xxx:1433/DB_name

这种斜杠分隔端口和数据库名的格式是MySQL等数据库的常用写法,但SQL Server的JDBC URL要求端口和数据库名之间用**分号;**分隔,且数据库名需要明确指定databaseName=参数。

修正后的完整配置文件

只需要修改JDBC连接字符串部分,其余配置保持不变即可:

input { 
  jdbc { 
    jdbc_connection_string => "jdbc:sqlserver://xxx.xxx.x.xxx:1433;databaseName=DB_name" 
    jdbc_user => "devuser" 
    jdbc_password => "devuser" 
    jdbc_driver_library => "D:/Mssqljdbc/sqljdbc4-2.0.jar" 
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
    statement => "SELECT * FROM sample" 
  } 
} 
output { 
  stdout { codec => json_lines } 
  elasticsearch { 
    hosts => "localhost" 
    index => "testmigrate" 
    document_type => "data" 
  } 
}

额外验证建议

为了确保后续同步顺利,你还可以做这些检查:

  • 确认sqljdbc4-2.0.jar的版本适配你的SQL Server版本(该驱动通常兼容SQL Server 2012及以上版本)
  • 验证devuser账号拥有访问DB_name数据库和sample表的权限
  • 用Test-NetConnection xxx.xxx.x.xxx -Port 1433(PowerShell)或telnet xxx.xxx.x.xxx 1433再次确认端口连通性

修改后重新执行bin\logstash -f sqltable.conf,应该就能正常建立连接并开始同步数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:14:10