SSMS 的 IntelliSense 一片空白,查询却能照常运行
当 SSMS 不再建议表和列的名称、却仍能执行查询时,请检查该窗口的连接、本地缓存以及账号的可见范围。
输入表名时没有任何提示,但同一个窗口却能顺利执行 SELECT 语句。正是这种组合暴露了线索:连接是通的,编辑器的补全状态却不通。SSMS 维护着自己的缓存,也维护着自己对“这个窗口用哪个数据库、哪个账号”的判断。在改动任何网络设置之前,请把这种状态与隧道分开看待。
窗口有自己的连接状态
每个查询窗口都带着自己的连接、数据库和授权上下文。Object Explorer 可能连着另一台服务器或另一个数据库,另一个标签页也可能以另一个账号运行。在拿它和别的窗口比较之前,先确认受影响窗口自身的状态。在 VPN 起来之前打开的窗口,也可能绑在一个已不存在的连接上,所以它的状态比标题栏暗示的更重要。
VPN 中断可能让那个窗口掉线,而应用程序看上去仍然活着。按 SSMS 的正常流程重新连接,然后确认数据库选择器显示的是你期望的数据库。
强制重建本地缓存
Microsoft 的 IntelliSense 疑难解答指南 记录了受支持的刷新方式:编辑 → IntelliSense → 刷新本地缓存,或 Ctrl+Shift+R。请在确认连接之后再使用它,尤其是窗口一直开着、对象却发生了变化的时候。刷新只会重建一份本地列表;它无法恢复已经消失的网络路径。
还要确认编辑器已启用 IntelliSense,并确认所安装的 SSMS 版本支持你正在写的语句。不同版本的补全行为并不相同,也不可能覆盖所有产品或所有脚本形式。如果快捷键毫无反应,请把它当作编辑器状态的症状,而不是 VPN 的症状。菜单项一直是灰的、快捷键被别的按键绑定吃掉,这两件事都是编辑器方面的事实,值得在归咎于隧道之前记录下来。
缺失的名称可能源于权限
补全列表只会建议已连接账号能看到的对象。因此,从同事那里复制来的脚本可能引用了你的会话无权解析的名称。要比较的是目标账号的可见范围,而不是某个管理员无关的会话。如果某个名称是因为权限而缺失,修好编辑器也不会让它出现。
向数据库所有者申请这项任务所需的最小权限,并让这份授权保持具体。为了填满一份建议列表而授予的宽泛管理权限,是用一点点便利换取一大片暴露面。
先判断你遇到的到底是哪种故障
两种故障从键盘上看很像,却需要不同的负责人。如果同一个窗口里的普通语句也执行失败,就查那条连接的名称解析、传输和身份验证。如果语句能跑、只是没有建议,证据就属于编辑器。写下你看到的是哪一种,因为两份报告会送到不同的团队,混在一起的描述会让两边都慢下来。
为工具组报告保留已安装的 SSMS 版本、所选数据库、账号,以及一个不含机密的小例子。相比一句“IntelliSense 坏了”,一份失败名称的准确记录或清单更有用。然后在刷新缓存之后、重新连接之后各重试一次,因为这两步能区分大多数情况。