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

在macOS上用SQL Server开发Node.js应用时SQLCMD连接错误求助

解决macOS上sqlcmd连接SQL Server的网络/登录超时问题

我之前在macOS上开发Node.js + SQL Server应用时,也碰到过几乎一模一样的错误,给你整理几个靠谱的排查步骤,一步步来应该能搞定:

  • 先确认SQL Server实例是否在运行
    绝大多数macOS用户都是用Docker来运行SQL Server的(毕竟官方没原生支持),先打开终端跑docker ps看看你的SQL Server容器是不是处于Up状态。如果容器没运行,用docker start <你的容器名/ID>启动它。如果是用其他方式部署的,比如Azure Data Studio的本地实例,去活动监视器里找找有没有sqlservr进程在跑。

  • 检查端口映射与监听情况
    SQL Server默认端口是1433,先确认这个端口有没有被正确映射/监听:

    • 用Docker的话,启动容器时必须加-p 1433:1433参数把容器内的1433端口映射到本地,没加的话本地根本连不上,可以重启容器补上这个参数。
    • 在终端跑lsof -i :1433,看看有没有进程在监听这个端口。如果没输出,说明端口没开,得重新配置SQL Server的端口或者Docker映射。
  • 验证SQL身份验证与sa用户状态
    很多时候是sa用户没启用或者身份验证模式不对:

    • 如果是Docker启动的,初始化时必须设置SA_PASSWORD(或MSSQL_SA_PASSWORD)和ACCEPT_EULA=Y环境变量,否则sa用户可能没激活。
    • 用Azure Data Studio或其他工具连接上SQL Server(如果能连的话),检查:
      1. 服务器的身份验证模式是不是SQL Server和Windows身份验证模式(默认可能是仅Windows);
      2. sa用户的状态是不是“启用”,有没有被锁定。
  • 重新安装ODBC驱动与sqlcmd工具
    macOS上的ODBC驱动偶尔会有安装不完整的情况,用Homebrew重新安装试试:

    brew uninstall msodbcsql17 mssql-tools
    brew install msodbcsql17 mssql-tools
    

    安装完重启终端,再执行你的连接命令。

  • 调整连接命令参数
    试试给连接命令加上端口号,或者换成localhost:

    # 指定端口
    sqlcmd -S 127.0.0.1,1433 -U sa -P your_password
    # 换成localhost
    sqlcmd -S localhost -U sa -P your_password
    

    有时候IP地址的解析会出问题,换localhost可能能绕过。

  • 排查macOS防火墙拦截
    系统防火墙可能会拦截1433端口的连接,临时关闭防火墙(系统设置 → 网络 → 防火墙)再试一次。如果能连上,就把sqlcmd工具或者1433端口添加到防火墙的允许列表里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:52:41