4

DG4MSQL ゲートウェイを使用して、Oracle 11g から SQL Server 2005 への db リンクを作成しようとしています。

データベース リンクを作成した後、JDBC ドライバーを使用して SQL Server システム ビュー (sys.services または sys.objects) を照会することはできませんが、JDBC ドライバーを使用してすべてのユーザー テーブルを照会することはできます。

sqlplus を使用すると、システム テーブルを含むすべてのテーブルをクエリできます。私のプロジェクトは Java プロジェクトなので、JDBC ドライバーを使用する必要があります。

もう 1 つ観察したことは、DG4MSQL ゲートウェイの代わりに DG4ODBC を使用すると、JDBC ドライバーを使用してシステム テーブルを含むすべての SQL Server テーブルをクエリできることです。

DG4MSQL と JDBC ドライバーを使用して SQL Server システム テーブルをクエリする方法があれば教えてください。

4

1 に答える 1

1

これは少し説明が難しいです

Oracle Gateway は、次の 3 種類の操作を実行します。

  • SQL 変換 (通常のテーブル、ビューなどをクエリする場合)
  • データ ディクショナリの翻訳 (システム ビューを照会する場合)
  • データ型の変換 (たとえば、Microsoft の日付から Oracle の日付へ)

JDBC の場合、JDBC-ODBC ブリッジにより、JDBC ドライバーは DG4ODBC に含まれるドライバーと完全に互換性があります。したがって、JDBC と DG4ODBC を併用すると、上記のすべての変換を実行できます。

問題は、DG4MSQL が独自のドライバーを使用し、SQL 変換のみが JDBC にブリッジできることです。

問題の解決策として、リモート SQL サーバーのシステム ビューに基づいて、Oracle スキーマにローカル ビューを作成することができます。要件に応じて、マテリアライズド ビューとして作成することもできます。

CREATE OR REPLACE VIEW sys_services 
AS SELECT * 
FROM sys.services@dblink;

次にsys_services、直接クエリする代わりにクエリを実行しますsys.services@dblink

于 2013-07-10T15:39:03.783 に答える