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 に答える