在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映射。
- 用Docker的话,启动容器时必须加
验证SQL身份验证与sa用户状态
很多时候是sa用户没启用或者身份验证模式不对:- 如果是Docker启动的,初始化时必须设置
SA_PASSWORD(或MSSQL_SA_PASSWORD)和ACCEPT_EULA=Y环境变量,否则sa用户可能没激活。 - 用Azure Data Studio或其他工具连接上SQL Server(如果能连的话),检查:
- 服务器的身份验证模式是不是SQL Server和Windows身份验证模式(默认可能是仅Windows);
- sa用户的状态是不是“启用”,有没有被锁定。
- 如果是Docker启动的,初始化时必须设置
重新安装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
相关产品推荐
相关产品推荐

