优先选mssql插件,需配置encrypt=true、trustservercertificate=false、显式databasename,并确保view server state权限和sql server≥2016版本才能查执行计划。

SQL Server 在 VS Code 中的查询体验,取决于插件选得对不对、连得稳不稳、查得准不准——不是装了 mssql 扩展就万事大吉。
你执行一条 SELECT * FROM orders WHERE created_at > '2025-01-01',结果卡住 3 秒才出数据,或者根本没走索引,那大概率是配置或用法出了问题。下面直奔实操重点。
用 mssql 还是 SQLTools 连 SQL Server?
优先选 mssql(Microsoft 官方维护),尤其当你只连 SQL Server / Azure SQL 时:
• 自带 T-SQL 语言服务器,对 WITH (NOLOCK)、OPTION (RECOMPILE) 等语法识别更准
• 支持连接池、活动会话监控、实时执行统计(右键「Show Live Query Statistics」)
• 不依赖额外驱动,安装即用;而 SQLTools 需手动装 SQLTools MSSQL Driver,且部分元数据补全(如系统视图字段)不如 mssql 稳定
• 唯一短板:不支持多数据库并行连接管理(比如同时连 SQL Server + PostgreSQL),这时才考虑 SQLTools + 驱动组合
mssql 连接配置里最容易漏的关键项
光填主机、端口、用户名、密码不够,以下三项不设,后续执行计划和性能分析基本废一半:
• 启用「Encrypt」必须设为 true(尤其连 Azure SQL),否则可能连上但查不出执行计划
• 「TrustServerCertificate」设为 false(生产环境严禁设 true),配合系统根证书链校验
• 在连接配置里显式指定「databaseName」,否则 SELECT DB_NAME() 返回 master,表名补全和执行计划都错位
• 敏感字段别硬编码:密码用 ${env:SQL_PASSWORD} 引用环境变量,避免提交到 Git
查不到执行计划?先确认这三件事
mssql 的「Explain」功能依赖底层 SQL Server 版本和权限,不是点一下就出图:
• 用户账号必须有 VIEW SERVER STATE 权限(仅 sysadmin 或显式授权才可查看实际执行计划)
• SQL Server 版本 ≥ 2016(2014 及更早只支持文本版 SET STATISTICS XML ON,VS Code 不解析)
• 查询语句不能含 GO 批处理分隔符,否则插件会报 Incorrect syntax near 'GO';改用分号或拆成单语句再试
• 替代方案:在查询开头加 SET STATISTICS XML ON;,执行后结果面板会多出「Execution plan」标签页(XML 格式,可右键「Open in New Tab」用浏览器查看可视化)
格式化和自动补全失效的典型原因
写 SELEC 按 Ctrl+Space 没反应,或保存后 WHERE 前多出两个空行——多半是语言模式或作用域错了:
• 右下角状态栏语言标识必须是 SQL(不是 Plain Text 或 MySQL),点击切换
• 工作区根目录若存在 .vscode/settings.json,检查是否有冲突配置,例如:"[mysql]": { "editor.formatOnSave": true } 会覆盖 SQL Server 文件的格式化行为
• 补全依赖连接状态:必须先右键 SQL 文件 →「MS SQL: Connect to Database」,成功连接后才触发元数据加载;断开后补全立即退化为纯关键字匹配
• 若仍无效,重启 VS Code 并打开命令面板运行 Developer: Reload Window,mssql 插件的 Language Server 常因热重载失败卡住
真正影响查询效率的,往往不是某条语句写得多漂亮,而是连接是否走对协议、权限是否够看执行计划、补全是否基于真实 schema。这些细节不调通,优化就无从谈起。











