0

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

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

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

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

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

4

1 回答 1

1

根据您得到的异常,我将假设您使用的是 SQL Server。您需要设置架构包含规则。您可以将其添加到上面的代码片段中:

schemaCrawlerOptions.setSchemaInclusionRule(new InclusionRule("schema_name.dbo.*", ""));
于 2012-05-17T22:33:07.497 回答