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