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 ответ

Решение

Из исключения, которое вы получаете, я предполагаю, что вы используете SQL Server. Вам необходимо установить правило включения схемы. Вы можете добавить это в свой фрагмент кода выше:

schemaCrawlerOptions.setSchemaInclusionRule(new InclusionRule("schema_name.dbo.*", ""));
Другие вопросы по тегам