You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server 2017数据库图缺失表:如何导入未显示的表?

解决SQL Server 2017数据库图中缺失表的问题

嘿,我之前在SSMS里折腾数据库图的时候也碰到过这种表不显示的情况!别慌,咱们从几个常见的方向排查解决:

1. 先确认账号权限

有时候不是表不存在,而是你当前登录的账号没权限查看这些表。先跑个查询验证下:

USE YourDatabaseName; -- 替换成你的数据库名称
SELECT name, schema_id FROM sys.tables WHERE name = '你的缺失表名';

如果查不到结果,大概率是权限不足。找有管理员权限的账号给你授权,比如:

GRANT VIEW DEFINITION ON [你的缺失表名] TO [你的登录账号];
GRANT SELECT ON [你的缺失表名] TO [你的登录账号];

授权完成后刷新对象资源管理器,再去数据库图里找表试试。

2. 检查表所属的架构(Schema)

默认情况下,数据库表选择对话框可能只展示dbo架构下的表。如果你的缺失表在其他架构(比如SalesHR)下,试试这几种方法:

  • 在选择表的对话框里,找到“架构”下拉框,选择对应的架构就能看到目标表;
  • 直接在搜索框里输入架构名.表名(比如Sales.OrderInfo),精准定位;
  • 有些版本的SSMS中,对话框底部有“显示所有架构的对象”复选框,勾选它就能列出全架构下的表。

3. 排除临时表/系统表的特殊情况

  • 如果你的表是本地临时表(以#开头)或者全局临时表(以##开头),数据库图不支持添加这类表——它们存在于tempdb且生命周期有限;
  • 如果是系统表,默认不会显示在列表里。要是确实需要添加系统表,可以去SSMS设置里开启:工具 -> 选项 -> SQL Server对象资源管理器 -> 查看,勾选“显示系统对象”,不过一般业务表不会是系统表,这个优先级靠后。

4. 刷新SSMS缓存

有时候SSMS的缓存没同步,导致表列表没更新。试试这些操作:

  • 在对象资源管理器里,找到你的数据库 -> 右键 -> 刷新;
  • 直接关闭SSMS,重新打开后再创建数据库图;
  • 极端情况可以清空SSMS缓存:工具 -> 选项 -> 环境 -> 导入和导出设置 -> 重置所有设置(谨慎使用,会重置你的SSMS配置)。

5. 检查表是否被误标记为系统表

极少数情况下,用户表会被错误标记为系统表,导致不显示。跑这个查询确认:

USE YourDatabaseName;
SELECT name, is_ms_shipped FROM sys.tables WHERE name = '你的缺失表名';

如果is_ms_shipped的值是1,说明被标记成系统表了,用下面的语句改回来:

EXEC sp_ms_marksystemobject '你的缺失表名', 0;

改完记得刷新对象资源管理器。

内容的提问来源于stack exchange,提问作者gary

火山引擎 最新活动