sublime text 需依赖系统级 sqlcmd 工具连接 sql server,90% 失败源于未安装或未配置 path;sqltools 配置中 driver 必须为 "mssql",且需启用 sql server tcp/ip 协议并开放 1433 端口。

Sublime Text 本身不能连接或执行 SQL Server 查询,必须靠 sqlcmd 命令行工具 + 正确 Build System 或 SQLTools 插件协同完成;90% 失败是因为 sqlcmd 没装、没进 PATH,或 SQLTools 配置里 driver 写成 mssql / sqlserver 这类错名。
确认 sqlcmd 已安装且可在终端直接调用
SQLTools 和 Build System 都依赖系统级 sqlcmd,不是 Python 包也不是 Sublime 插件自带的——它来自 Microsoft 官方 SQL Server 命令行工具。
- Windows:下载并安装 Microsoft Command Line Utilities(含
sqlcmd.exe),安装后检查是否能运行:sqlcmd -?输出帮助即成功 - macOS:用
brew install mssql-tools(需先装unixodbc),然后确认sqlcmd --help可执行 - Linux(Ubuntu/Debian):按官方文档添加微软源,运行
sudo apt-get install mssql-tools unixodbc-dev,再验证sqlcmd -S localhost -U sa是否提示密码 - 无论哪平台,都必须把
sqlcmd所在目录加进系统 PATH;Sublime 启动时读取的是登录 shell 的 PATH,改完 PATH 后务必重启 Sublime
SQLTools 配置 SQL Server 连接时 driver 必须写 mysql?不,是 mssql
SQLTools 官方文档明确要求 SQL Server 的 type 字段填 mssql(不是 sqlserver、ms-sql 或空),否则插件根本不会尝试调用 sqlcmd,补全、执行全部静默失败。
- 按
Ctrl+Shift+P→ 输入SQLTools: Edit Connections,打开SQLToolsConnections.json - 添加连接块,关键字段必须严格如下:
{ "my_prod": { "type": "mssql", "host": "192.168.1.100", "port": 1433, "user": "sa", "password": "MyPass@123", "database": "master" } } -
password含特殊字符(如@、$)时不用额外转义,但整个值必须用双引号包裹;host别写localhost—— Windows 上默认走命名管道,sqlcmd会连不上,换成127.0.0.1或具体 IP - 保存后右键 .sql 文件 →
SQLTools: Connect to…,状态栏出现绿色Connected to my_prod才算真正就绪
Build System 调用 sqlcmd 执行当前文件,参数顺序不能错
如果不想用 SQLTools,纯 Build System 更轻量,但 sqlcmd 参数顺序和引号处理极易出错,尤其 Windows 下 shell: true 必须设为 true,否则找不到命令。
- 新建 Build System(
Tools > Build System > New Build System),填入(以 Windows 为例):{ "cmd": ["sqlcmd", "-S", "127.0.0.1,1433", "-U", "sa", "-P", "MyPass@123", "-d", "master", "-i", "$file"], "selector": "source.sql", "shell": true } -
-i表示输入文件,$file是 Sublime 变量,代表当前文件绝对路径;别用$file_path或漏掉引号,否则含空格路径会崩 - macOS/Linux 把
-P改成-p(小写),且密码含$时需用单引号包裹:"-p", 'My$Pass' - 执行前先手动在终端跑一遍相同命令,确保能输出结果;Build System 报
errorlevel 1通常是因为登录失败或数据库名不存在,不是配置问题
最易被忽略的点:SQL Server 默认关闭 TCP/IP 协议,即使 sqlcmd 装好了、PATH 对了、配置也对了,连不上大概率是 SQL Server Configuration Manager 里没启用 TCP/IP,或者防火墙拦了 1433 端口——这和 Sublime 无关,但所有配置都会卡在这一步。











