Navicat for SQL Server 点“解释”未出图形化执行计划,主因是连接属性未勾选「显示执行计划」、SQL Server版本低于2008,或语句含INSERT EXEC等不支持构造;默认获取实际执行计划,含Actual Rows、内存授予等运行时指标,且需SHOWPLAN权限。
navicat for sql server 点“解释”就直接获取图形化执行计划,不是 explain 命令,也不需要手动开 set statistics xml on —— 它底层调用的是 sql server 原生的图形化执行计划 api,只要权限和配置到位,点一下就能出图。
为什么点了“解释”没出图,只看到文本或报错?
常见原因就三个,优先排查:
- 连接属性里没勾选「显示执行计划」:必须在连接配置 → 「常规」选项卡中手动勾选该选项,否则 Navicat 默认只返回文本计划(
SET SHOWPLAN_TEXT ON) - SQL Server 版本低于 2008:2005 及更早版本不支持 XML 格式执行计划输出,Navicat 会自动回落为纯文本,且无法渲染图标和成本提示
- 语句含不支持构造:比如
INSERT EXEC、OPENQUERY、引用链接服务器对象,SQL Server 服务端会直接拒绝生成图形计划,Navicat 只能显示空面板或报错Msg 3614
实际执行计划 vs 估计执行计划,Navicat 默认给你哪个?
Navicat 默认获取的是实际执行计划(actual execution plan),也就是真实执行一遍后返回的带运行时统计的 XML。这意味着:
-
Actual Rows和Estimated Rows会并列显示;如果差异极大(如预估 1 行、实际扫 50 万行),说明统计信息严重过期,该跑UPDATE STATISTICS了 -
UPDATE/DELETE/INSERT类语句点“解释”会真实执行——不是预估,是真改数据,别在生产环境乱点 - 内存授予(
Granted Memory)、警告图标(黄色感叹号)、并行线程数等运行时指标,只有实际计划里才有
如何确认你看到的是真正的图形化计划?
图形化计划有三个不可伪造的视觉特征,缺一不可:
- 右上角显示「查询成本(相对于批处理)」百分比数字,比如
92%—— 文本计划里绝对没有这个 - 运算符节点带图标(如
Clustered Index Scan是带文档图标的方块,Hash Match是两个重叠圆圈),鼠标悬停能看到详细属性 - 箭头粗细反映数据流行数:越粗表示中间传递的行越多;若左侧是
SELECT、右侧是粗箭头连向Table Scan,基本等于没走索引
权限不足时的典型报错和修复方式
没 SHOWPLAN 权限时,点“解释”会立即失败,报错固定为:
Msg 262, Level 14, State 1: SHOWPLAN permission denied.
修复方法只有两个:
- 用
sysadmin或db_owner账号登录后执行:GRANT SHOWPLAN TO [your_user] - 或者更精准地只授当前库权限:
GRANT SHOWPLAN ON DATABASE::[your_db] TO [your_user]
注意:仅给 VIEW SERVER STATE 不够,SQL Server 图形化计划强制依赖 SHOWPLAN 权限,这点和 MySQL/PostgreSQL 完全不同。


















