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.*", ""));