SSMS 2016部分架构Intellisense正常,新架构功能失效求助
解决SSMS 2016中新架构Intellisense失效的问题
我之前碰到过一模一样的情况——远程SQL Server环境里,旧架构的智能感知好好的,刚建的新架构却完全没反应,折腾了好一阵才找到几个靠谱的解决办法,你按顺序试试:
1. 先确认新架构的权限配置
Intellisense能不能识别对象,核心看当前登录账户有没有VIEW DEFINITION权限,很多人新建架构后容易漏赋这个权限:
- 打开目标数据库,执行下面的SQL给账户补全权限:
执行完按GRANT VIEW DEFINITION ON SCHEMA::[你的新架构名称] TO [你的登录账户]; GRANT SELECT ON SCHEMA::[你的新架构名称] TO [你的登录账户];Ctrl+Shift+R刷新缓存,再试智能感知。
2. 手动清除SSMS的本地缓存文件
有时候SSMS的缓存文件会局部损坏,刚好影响新创建的架构:
- 关掉所有SSMS窗口
- 找到缓存目录,路径一般是:
C:\Users\[你的Windows用户名]\AppData\Local\Microsoft\SQL Server Management Studio\13.0\IntelliSenseCache - 删除这个文件夹里的所有文件
- 重新打开SSMS连接数据库,等个1-2分钟让缓存自动加载,再测试新架构的智能提示。
3. 检查数据库兼容性级别
远程数据库的兼容性设置和SSMS不匹配也会出问题:
- 先查当前数据库的兼容性级别:
SQL Server 2016对应的级别是130,如果不是,改成130:SELECT name, compatibility_level FROM sys.databases WHERE name = '你的数据库名';ALTER DATABASE [你的数据库名] SET COMPATIBILITY_LEVEL = 130; - 另外去SSMS的
Tools > Options > Text Editor > Transact-SQL > IntelliSense里,确认Enable SQL Server 2008 compatibility for IntelliSense没被勾选(勾了就取消)。
4. 用DAC连接强制刷新元数据
如果上面的方法都没用,试试专用管理员连接(DAC)来重置元数据:
- 关掉SSMS重新打开,在连接对话框里,服务器名称输入
ADMIN:[远程服务器名/IP],登录进去 - 执行下面的命令:
DBCC FREEPROCCACHE; DBCC FLUSHPROCINDB(你的数据库ID); -- 可以用SELECT DB_ID('你的数据库名')获取ID - 关掉DAC连接,用普通方式重新登录,刷新缓存再测试。
终极方案:修复SSMS 2016
要是所有方法都无效,大概率是SSMS本身的组件损坏了:
- 打开控制面板,找到Microsoft SQL Server 2016,选择「更改」,然后选「修复」
- 修复完成后重启电脑,再打开SSMS测试。
这些步骤我帮好几个同事解决过相同的问题,你一步步试,应该能搞定。
内容的提问来源于stack exchange,提问作者Merin Nakarmi
相关产品推荐
相关产品推荐

