sublime text 本身不能连接 sql server,必须依赖系统级 sqlcmd 工具与 sqltools 插件协同工作;90% 失败源于 sqlcmd 未安装或未加入 path,或 sqltools 配置中 driver 错写为 sqlserver/ms-sql,正确值仅为 "mssql"。

Sublime Text 本身不带数据库连接能力,SQL Server 连接必须靠 sqlcmd + SQLTools 协同完成;90% 的失败不是插件没装对,而是 sqlcmd 没装、没进 PATH,或配置里 driver 写错成 sqlserver / ms-sql。
确认 sqlcmd 已安装且可全局调用
SQLTools 不自带 sqlcmd,它只负责把 SQL 发给系统命令行。你必须先在终端里能直接运行 sqlcmd,否则后续全卡死。
- Windows:下载安装 Microsoft Command Line Utilities,装完后打开 CMD 输入
sqlcmd -?——有帮助输出才算成功 - macOS:执行
brew install mssql-tools(需提前brew install unixodbc),再跑sqlcmd --help - Linux(Ubuntu/Debian):按微软官方文档加源,运行
sudo apt-get install mssql-tools unixodbc-dev,验证用sqlcmd -S 127.0.0.1 -U sa(别用localhost) - 无论哪平台,装完必须把
sqlcmd所在目录加进系统PATH;改完 PATH 后——务必重启 Sublime Text,否则它读不到新环境变量
SQLTools 配置中 driver 必须写 mssql
SQLTools 对 SQL Server 的识别只认一个值:"type": "mssql"。写成 sqlserver、ms-sql、SQLServer 或留空,插件会静默跳过连接逻辑,补全、执行全部无效。
- 按
Ctrl+Shift+P→ 输入SQLTools: Edit Connections打开配置文件 - 填入连接时,
type字段严格写mssql,例如:{ "prod-db": { "type": "mssql", "host": "127.0.0.1", "port": 1433, "user": "sa", "password": "MyPass@123", "database": "master" } } -
host别写localhost(Windows 默认走命名管道,sqlcmd连不上),统一用127.0.0.1或实际 IP -
password含@、$等符号不用转义,但整个值必须用双引号包裹
让 .sql 文件真正启用高亮与补全
高亮失效和补全不弹出,80% 是因为 Sublime 没把文件当标准 SQL 处理——它默认不绑定 .sql 到官方 SQL 语法包,而常误判为 Plain Text 或 MySQL。
- 打开任意
.sql文件,点右下角当前语法名(如显示Plain Text),从菜单选SQL(注意:不是MySQL、PL/SQL,路径应是SQL > SQL) - 切换后右键该文件标签 →
Set Syntax: SQL→ 再点Apply to All Files with Same Extension - 如果列表里压根没有
SQL选项,说明缺核心语法包:按Ctrl+Shift+P→Package Control: Install Package→ 搜索并安装SQL(作者必须是sublimelsp) - 验证:输入
SELECT * FROM users;,SELECT和FROM应立刻变蓝/粗体;否则检查Packages/SQL/SQL.tmLanguage是否存在
连接成功后状态栏必须显示绿色 Connected
保存连接配置后,不能只靠“看起来像连上了”。真正的连接就绪信号只有一个:右键 .sql 文件 → SQLTools: Connect to… 选刚建的连接,状态栏右下角出现绿色 Connected to xxx。
- 没这个提示,说明
sqlcmd调用失败、认证被拒、TCP/IP 未启用,或 SQL Server 实例没开 1433 端口 - 常见卡点:SQL Server Management Studio 里确认已启用 TCP/IP 协议(SQL Server 配置管理器 → 协议 → 启用 TCP/IP),防火墙放行 1433 端口
- 补全功能只在绿色 Connected 状态下激活;即使语法高亮正常,没连上也不会弹表名或字段建议
最易忽略的是:Sublime 启动时读取的是登录 shell 的 PATH,不是你当前终端的临时 PATH;改完环境变量不重启 Sublime,sqlcmd 就永远找不到。











