VSCode需安装SQLTools等扩展才能执行SQL文件,必须先设语言模式为SQL、手动连接数据库并激活,再全选内容用Run All Statements执行;mssql扩展还要求独占行GO分隔符且预装sqltoolsservice。

VSCode 本身不支持直接运行 SQL 脚本文件,必须依赖扩展;装对插件、选对驱动、配对连接上下文,三者缺一不可,否则会静默失败或报 No active connection found。
SQLTools 怎么运行整个 .sql 文件
SQLTools 支持一次性执行当前文件全部语句(以分号 ; 分隔),但行为受光标位置和连接上下文双重控制,不是“打开就点一下”那么简单。
- 确保文件语言模式是
SQL:按Ctrl+K M→ 选SQL,否则右键菜单不出现执行项 - 必须已建立并手动连接(
Connect)某个数据库,且该连接处于激活状态——状态栏右下角要显示数据库图标和连接名 - 快捷键
Ctrl+Alt+R(Windows/Linux)或Cmd+Alt+R(macOS)默认只运行“当前语句块”,不是全文件;要运行全部,得先全选内容(Ctrl+A),再触发执行 - 右键菜单里有明确选项:
Run All Statements(不是Run Current Statement),这个才真正遍历整个文件、按分号切分并顺序执行 - 若脚本含
CREATE DATABASE或跨库操作,MySQL/PostgreSQL 驱动可能拒绝执行(权限或上下文限制),建议拆成独立步骤手动跑
mssql 扩展执行 .sql 文件的特殊要求
专用于 SQL Server 的 mssql 扩展对脚本执行更严格,尤其在 WSL2 或远程连接场景下容易卡在“正在执行”而无响应。
- 必须在命令面板中先执行
MS SQL: Connect,不能仅靠侧边栏点击连接;否则即使状态栏显示已连,执行仍报No active connection -
.sql文件里不能混用 GO 批处理分隔符和普通分号——mssql只认GO,且GO必须独占一行,前后不能有空格或注释 - 首次运行前,扩展会自动下载
sqltoolsserviceCLI 工具;若网络受限(如公司代理),会卡住不动,需手动下载并配置sqltools.servicePath到用户设置 - 执行结果不支持表格导出,只能看纯文本输出;大结果集(>1000 行)默认截断,需提前在设置里调高
mssql.maxRows
为什么脚本执行一半就停,或者中文变问号
这不是语法错误,而是连接层编码/时区没对齐,尤其在 MySQL + WSL2 + VSCode UTF-8 混合环境里高频发生。
- MySQL 驱动默认用
utf8(实际是 utf8mb3),但现代应用应强制设为utf8mb4:在 SQLTools 连接 JSON 配置里加字段"connectionString": "charset=utf8mb4" - PostgreSQL 需显式指定客户端编码:
"connectionString": "client_encoding=utf8",否则SELECT '中文'返回乱码 - 脚本文件本身编码必须是 UTF-8(无 BOM):VSCode 右下角点击编码名 → 选
Save with Encoding→UTF-8;BOM 会导致首条语句解析失败 - WSL2 下 MySQL 默认监听
127.0.0.1,但 VSCode 运行在 Windows 端,host 填localhost会走 IPv6 回环,常超时;务必填127.0.0.1
最容易被忽略的是连接激活状态和语句分隔逻辑——VSCode 不像 DBeaver 那样自动维护连接上下文,每次执行前都得确认右下角图标是绿色且名称正确,否则哪怕配置完全一样,也会返回空结果或报错。


















