有没有办法单独列出用户定义的视图。在MSSQL中,当我尝试使用jdbc的DatabaseMetadata的getTables()函数列出表和视图时,它显示了所有视图。但我不需要系统视图进入我的结果集。
DatabaseMetadata dmd = connection.getMetaData();
tablesResultSet= dmd.getTables(dbName, null, null, new String[] { "TABLE", "VIEW" });
这是我用来提取元数据的代码。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:3)
您可以直接通过SELECT
电话询问数据库并分析结果:
SELECT * FROM sys.objects WHERE [type]='V' AND is_ms_shipped=0
[type]='V'
将过滤VIEW
,is_ms_shipped=0
将过滤用户创建的对象(未从MS安装)
答案 1 :(得分:0)
您必须考虑架构。 MS SQL上的默认架构是dbo。因此,您对元数据的调用应该是:
DatabaseMetadata dmd = connection.getMetaData();
tablesResultSet= dmd.getTables(dbName, "dbo", null, new String[] { "VIEW" });
或者您之前通过
获得所有架构dmd.getSchemas(dbName,"%");
然后循环所有'工作'模式。