VS Code中在Notebook运行SQL需选对插件:vscode-sql-notebook仅支持直连PostgreSQL/MySQL且必须用.sql后缀;.NET Interactive需手动安装SQL内核并仅支持SQL Server、SQLite等。

VS Code 里直接在 Notebook 中运行 SQL,不需要额外装数据库客户端,但必须选对插件——vscode-sql-notebook 和 .NET Interactive 是两条完全不同的技术路径,混用会导致“执行没反应”或“找不到内核”。
vscode-sql-notebook 插件不执行 SQL 的常见原因
这个插件是轻量级纯前端方案,只支持直连(如 PostgreSQL、MySQL),不依赖 .NET 或 Python 运行时。但它有个硬限制:必须以 *.sql 后缀保存文件才能触发 SQL 内核,哪怕你把它拖进 Notebook 界面也不行。
- 新建文件时不能叫
query.ipynb,得叫data.sql—— 否则侧边栏不会出现 “Run Cell” 按钮 - 连接配置写在
.vscode/settings.json里,格式必须是"sqltools.connections"数组,不是"connections"或"databases" - 如果测试连接成功但执行报
Connection refused,大概率是端口填错,或数据库服务根本没在本地监听(比如 PostgreSQL 默认只监听localhost,而插件尝试走127.0.0.1)
.NET Interactive + SQL 需要手动注册 SQL 内核
.NET Interactive 的 SQL 支持是“可选加载项”,装完插件后默认没有 SQL 内核,SELECT * FROM users 会直接报错 Unknown kernel: sql。
- 打开命令面板(
Ctrl+Shift+P),运行.NET Interactive: Install additional kernels - 在弹出列表中勾选
SQL,回车确认 —— 它会自动下载microsoft.dotnet-interactive.sql包 - 新建 notebook 后,点击右上角内核选择器,从下拉菜单里手动切到
SQL (.NET Interactive),不是SQL或dotnet-interactive - 该内核只支持 SQL Server(含 LocalDB)、SQLite 和 Azure SQL;MySQL/PostgreSQL 需额外配 ODBC 驱动,且不保证稳定
SQL Notebook 中多语句与变量传参怎么写
两种插件都支持单元格内多语句,但分隔逻辑不同:vscode-sql-notebook 用空行切分,.NET Interactive 用分号 ;。变量传参也完全不同。
-
vscode-sql-notebook不支持运行时变量,只能靠环境变量注入,例如密码字段填${env:DB_PASS},启动 VS Code 前需在终端里先执行export DB_PASS=xxx -
.NET Interactive支持 C# 变量混写,比如先建一个 cell:var table = "users";,再在下一个 SQL cell 里写SELECT * FROM @table;—— 注意这里用的是@table,不是$table或{{table}} - 结果集默认只显示前 100 行,想看全量得加
SET ROWCOUNT 0;(SQL Server)或改内核配置,否则容易误判查询为空
真正麻烦的不是怎么连,而是哪条路径能长期用下去:vscode-sql-notebook 更新慢、不支持事务控制;.NET Interactive 依赖 .NET SDK 版本,换台机器就得重装内核。选之前先确认你的数据库类型和团队协作方式,别等写了一堆 .sql 文件才发现同事打不开。











