我目前正在使用Schemacrawler收集有关各种数据库的信息。
我遇到的问题是运行应用程序的用户无法访问每个数据库。如果我尝试检索模式列表:
SchemaCrawlerOptions schemaCrawlerOptions = new SchemaCrawlerOptions();
schemaCrawlerOptions.setSchemaInfoLevel(SchemaInfoLevel.minimum());
schemaCrawlerOptions.setTableTypes(new TableType[] { TableType.table });
Database database = SchemaCrawlerUtility.getDatabase(connection, schemaCrawlerOptions);
database.getSchemas()
...抛出SchemaCrawlerException(服务器主体“...”无法在当前安全上下文下访问数据库“...”。)。有没有办法只获取可访问的数据库(无需显式声明每个模式名称)?
答案 0 :(得分:1)
从您获得的异常开始,我将假设您正在使用SQL Server。您需要设置架构包含规则。您可以将其添加到上面的代码段中:
schemaCrawlerOptions.setSchemaInclusionRule(new InclusionRule("schema_name.dbo.*", ""));