列出数据库中的用户定义视图

时间:2017-02-27 10:55:45

标签: sql-server jdbc database-metadata

有没有办法单独列出用户定义的视图。在MSSQL中,当我尝试使用jdbc的DatabaseMetadata的getTables()函数列出表和视图时,它显示了所有视图。但我不需要系统视图进入我的结果集。

DatabaseMetadata dmd = connection.getMetaData();
tablesResultSet= dmd.getTables(dbName, null, null, new String[] { "TABLE", "VIEW" });

这是我用来提取元数据的代码。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

您可以直接通过SELECT电话询问数据库并分析结果:

SELECT * FROM sys.objects WHERE [type]='V' AND is_ms_shipped=0

[type]='V'将过滤VIEWis_ms_shipped=0将过滤用户创建的对象(未从MS安装)

Find details here

答案 1 :(得分:0)

您必须考虑架构。 MS SQL上的默认架构是dbo。因此,您对元数据的调用应该是:

DatabaseMetadata dmd = connection.getMetaData();
tablesResultSet= dmd.getTables(dbName, "dbo", null, new String[]   { "VIEW" });

或者您之前通过

获得所有架构
dmd.getSchemas(dbName,"%");

然后循环所有'工作'模式。