Sublime Text 连接 SQL Server 必须依赖系统级 sqlcmd 工具,90% 失败源于未安装或未配置 PATH;SQLTools 配置中 driver 必须为 "mssql",且需启用 TCP/IP 协议并开放 1433 端口。

Sublime Text 本身不提供 SQL Server 连接能力,所谓“安装连接端”实际是配置外部工具链 —— 核心依赖 sqlcmd 命令行工具,90% 失败源于它没装或没进系统 PATH。
sqlcmd 没装或 PATH 不对,一切配置都白搭
SQLTools 或任何 Sublime 插件都无法绕过 sqlcmd。它不是可选组件,而是硬性前置条件:
- Windows 用户必须从 Microsoft 官网下载并安装
Microsoft Command Line Utilities for SQL Server(含sqlcmd和bcp);仅装 SSMS 不等于有sqlcmd - 安装后,在终端直接运行
sqlcmd -?必须能输出帮助信息;若报“command not found”,说明 PATH 没包含安装目录(常见路径:C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\) - macOS/Linux 用户需用
brew install mssql-tools+curl -o /tmp/msodbcsql17.deb https://packages.microsoft.com/ubuntu/22.04/prod/pool/main/m/msodbcsql17/msodbcsql17_17.10.5.1-1_amd64.deb等方式手动装驱动和工具,不能只靠npm或插件自动解决
SQLTools 配置里 driver 必须写 "mssql",不是 "sqlserver" 或 "ms-sql"
哪怕 sqlcmd 能跑,SQLTools 的连接配置写错 driver 名也会静默失败:
- 在
Packages/User/SQLTools/connections.json中,"driver"字段只能是"mssql"(小写,无空格,无后缀) - 写成
"sqlserver"、"ms-sql"、"mssql17"都会触发 “Connection failed: Unknown driver” 错误,但插件不会明确提示 - 完整最小连接示例:
{
"mydb": {
"driver": "mssql",
"host": "192.168.1.100",
"port": 1433,
"database": "master",
"user": "sa",
"password": "YourStrong@Pass123"
}
}
注意:密码含特殊字符(如 @、$)时,sqlcmd 命令行会解析错误 —— 此时必须改用 Windows 身份验证("trusted_connection": true)或把密码用单引号包裹在命令中(插件内部不处理该转义,得靠你手动调 sqlcmd 测试)
TCP/IP 协议和 1433 端口必须启用,localhost 不一定通
SQL Server 默认禁用 TCP/IP,且 Windows 防火墙常拦截 1433 —— 导致 Sublime 里显示 “Connected”,但执行查询时卡住或超时:
- 打开
SQL Server Configuration Manager→ 展开 “SQL Server 网络配置” → 右键 “MSSQLSERVER 的协议” → 启用TCP/IP - 双击 TCP/IP → IP 地址页签 → 找到
IPAll→ 清空TCP Dynamic Ports,填入TCP Port为1433 - 重启 SQL Server 服务(
services.msc中找SQL Server (MSSQLSERVER)) - 防火墙入站规则中,允许端口
1433的 TCP 连接(不要只信“专用网络”规则,测试时建议临时关闭防火墙) - 如果连本地实例,
host别写localhost,改用127.0.0.1或机器名;localhost在某些配置下会走命名管道而非 TCP
Build System 调用 sqlcmd 时 shell: true 是 Windows 必选项
想用 Ctrl+B 直接执行 .sql 文件,自定义 Build System 比插件更可控,但 Windows 下漏掉 "shell": true 就会报错 [Errno 2] No such file or directory:
- 新建 Build System(Tools > Build System > New Build System),内容如下:
{
"cmd": ["sqlcmd", "-S", "127.0.0.1,1433", "-U", "sa", "-P", "YourStrong@Pass123", "-d", "master", "-i", "$file"],
"selector": "source.sql",
"shell": true,
"working_dir": "$file_path"
}
关键点:
-
-S参数格式必须是服务器名,端口(如"127.0.0.1,1433"),不能用-h和-p拆开(sqlcmd不支持) -
-i后跟$file,不是$file_path或$file_name;路径含空格时,shell: true会自动加引号,否则命令崩 - Linux/macOS 用户去掉
"shell": true,改用"cmd": ["bash", "-c", "sqlcmd ..."]包一层,避免 shell 解析问题
真正麻烦的从来不是 Sublime 设置,而是 sqlcmd 能否在任意路径下被调起、SQL Server 实例是否监听 TCP、密码里那个 @ 是否让整个命令解析失效 —— 这些点漏一个,所有插件和构建系统都会原地静默失败。


















