执行Sqoop导入SQL Server时遇TCP/IP连接失败问题求助
首先先明确你的执行命令和报错信息:
你执行的Sqoop命令:
sqoop import --connect jdbc:sqlserver://localhost/db_name--username user--password user--table table_name.
收到的错误:
ERROR: The TCP/IP connection to the host 127.0.0.1, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall."
你已经做了启用TCP/IP、配置端口1433、设置防火墙规则这些基础操作,我再给你几个关键的排查方向:
先修正Sqoop命令的格式问题:你的命令里参数之间没有空格!比如
db_name后面直接跟--username,这会让JDBC把db_name--username当成连接字符串的一部分,导致实际连接的地址完全错误。正确的命令应该是每个参数单独分开:sqoop import --connect jdbc:sqlserver://localhost/db_name --username user --password user --table table_name这很可能是导致连接失败的直接原因!
确认SQL Server确实在监听1433端口:打开命令提示符,执行
netstat -ano | findstr :1433,查看输出里是否有状态为LISTENING的条目。如果没有,说明SQL Server并没有真正绑定1433端口,需要重新检查SQL Server配置管理器里的TCP/IP属性:确保IP地址的TCP端口设置为1433,并且重启SQL Server服务让配置生效。验证本地基础连接是否正常:先抛开Sqoop,用SQL Server Management Studio直接连接
localhost,1433,或者写个简单的JDBC测试代码,看能不能成功连接。如果连本地都连不上,那问题还是出在SQL Server本身的配置上;如果能连上,再回到Sqoop排查可能的环境变量或依赖问题(比如JDBC驱动是否正确放置)。检查SQL Server实例的远程连接设置:打开SSMS,右键你的SQL Server实例→属性→连接,确保“允许远程连接到此服务器”选项是勾选状态,然后重启服务。
排查防火墙和安全软件的拦截:除了系统防火墙,还要检查是否有第三方杀毒软件或安全工具在拦截TCP 1433端口的连接。可以临时关闭这些软件测试,如果连接成功了,再添加对应的放行规则。
内容的提问来源于stack exchange,提问作者sruthi

