Schemacrawler忽略无法访问的模式

时间:2012-05-14 15:32:23

标签: java database schema database-metadata schemacrawler

我目前正在使用Schemacrawler收集有关各种数据库的信息。

我遇到的问题是运行应用程序的用户无法访问每个数据库。如果我尝试检索模式列表:

SchemaCrawlerOptions schemaCrawlerOptions = new SchemaCrawlerOptions();
schemaCrawlerOptions.setSchemaInfoLevel(SchemaInfoLevel.minimum());
schemaCrawlerOptions.setTableTypes(new TableType[] { TableType.table });

Database database = SchemaCrawlerUtility.getDatabase(connection, schemaCrawlerOptions);
database.getSchemas()

...抛出SchemaCrawlerException(服务器主体“...”无法在当前安全上下文下访问数据库“...”。)。有没有办法只获取可访问的数据库(无需显式声明每个模式名称)?

1 个答案:

答案 0 :(得分:1)

从您获得的异常开始,我将假设您正在使用SQL Server。您需要设置架构包含规则。您可以将其添加到上面的代码段中:

schemaCrawlerOptions.setSchemaInclusionRule(new InclusionRule("schema_name.dbo.*", ""));