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

为何SSMS可连接SQL Server但sqlcmd出现连接超时?

排查SQL Server 2012连接超时问题(SSMS正常但sqlcmd失败)

这种情况我之前帮同事排查过好几次,大概率是下面几个原因导致的,你可以挨个试试:

  • 协议启用或优先级差异
    SSMS连接时会自动尝试多种协议(比如TCP/IP、命名管道),但sqlcmd默认可能只优先使用了部分协议。你可以打开SQL Server配置管理器:

    1. 找到SQL Server网络配置,确认目标实例的TCP/IP协议已启用;
    2. 再看SQL Native Client配置里的客户端协议,把TCP/IP调整到优先级最高的位置,避免sqlcmd优先尝试其他不通的协议。
  • 防火墙或进程级网络限制
    虽然SSMS能连上,但有可能你的工作站防火墙对sqlcmd进程单独做了拦截,或者服务器端防火墙针对命令行工具的流量有特殊规则。你可以临时关闭工作站的防火墙测试一下,或者在服务器端检查是否有针对特定客户端程序的端口过滤规则。

  • sqlcmd版本兼容性问题
    如果你的sqlcmd是从高版本SQL Server(比如2019/2022)安装的,连接2012版本数据库时可能存在协议协商的兼容性问题。建议你试试用SQL Server 2012自带的sqlcmd,路径一般是C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe,直接用这个路径执行命令试试。

  • 默认连接超时时间过短
    SSMS默认的连接超时可能比sqlcmd长(sqlcmd默认登录超时是15秒),如果网络延迟稍高就会超时。你可以手动指定更长的超时时间,执行命令:sqlcmd -S server,port -E -l 60,这里-l 60是把登录超时设置为60秒,看看能不能成功。

  • DNS解析或网络路由差异
    有时候SSMS会用本地缓存的DNS记录,而sqlcmd重新解析DNS时出了问题,或者两者的网络路由路径不同。你可以试试用服务器的IP地址代替服务器名称,比如执行sqlcmd -S 192.168.x.x,port -E,如果能连上,那就是DNS解析的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:49:02