仅列出我的应用程序使用的 SQL 服务器表(SSMS 中 "Tables" 树视图中的表)

List ONLY the SQL Server tables that my app uses (the ones in the "Tables" treeview in SSMS)

我无法弄清楚如何只获取显示在 SSMS 树视图中 dbname->tables 下的表列表。我不想要系统表,也不想要任何视图等。我只想要显示在树视图中的表视图下的表。我试过这个:

Select * from dbname.INFORMATION_SCHEMA.TABLES
 Where dbname.INFORMATION_SCHEMA.TABLES.TABLE_TYPE = 'BASE TABLE'

但这给我的不仅仅是表格下树视图中的内容。我要解决的问题是那里有超过 7000 个表,我有一个过程 "hide" 我从未看过的那些,但我需要将它批量应用到表列表中的列表其中 row-count = 0。提前致谢。

编辑:请不要因为我最终要做的事情而分心...那只是为了上下文。主要问题是 "how do I just get the list of tables under the "Tables" 特定数据库的树视图。"

USE YOURDBNAME
GO 
SELECT *
FROM sys.Tables
GO

似乎要操作的是实际上之后是:

SELECT [name]
FROM sys.tables t
WHERE t.is_ms_shipped = 0
  AND t.[type] = 'U';

但是,当然,在系统数据库中有用户表这一事实是不同的问题。

嗯,没有任何答案能给我我需要的东西,我做了以下事情: 在 SSMS 中,我 select 编辑了相关数据库的树视图中的 "Tables" 节点。然后我按下 "F7" 键,它显示了 "Object Viewer" 中的表格列表。该列表还包括 "System Tables" 下的表格(我不想要),其中只有两个。好消息是对象查看器允许多 select,所以我只是 selected 所有表格,复制它们 (CTRL+C) 并将它们粘贴到 Excel。然后我只是从 Excel 的结果列表中删除了我不想要的两个表。不像基于所有 code/SQL 的解决方案(这是我的目标)那么优雅,但由于这是一次性的,我可以接受它。如果我也可以接受 "System Tables",那么我最初问题中的 SQL 似乎是最好的答案,尽管 @Lamu 对 "IS_MS_SHIPPED = 0" 的使用很有趣任何阅读本文的人也应该看看这个角度。