无法查询通过使用DG4MSQL创建的数据库链接的SQL Server系统表

无法查询通过使用DG4MSQL创建的数据库链接的SQL Server系统表

问题描述:

我正尝试使用DG4MSQL网关创建从Oracle 11g到SQL Server 2005的数据库链接。无法查询通过使用DG4MSQL创建的数据库链接的SQL Server系统表

创建数据库链接后我无法使用JDBC驱动程序查询SQL Server系统视图(sys.services或sys.objects),但我能够使用JDBC驱动程序查询所有用户表。

如果我使用sqlplus,我可以查询包括系统表在内的所有表。由于我的项目是Java项目,我必然会使用JDBC驱动程序。

我做的另一个观察是,如果我使用DG4ODBC而不是DG4MSQL网关,那么我能够使用JDBC驱动程序查询包括系统表在内的所有SQL Server表。

请让我知道是否有任何方法可以使用DG4MSQL和JDBC驱动程序查询SQL Server系统表?

这是一个棘手一点点解释

一个Oracle网关进行3种类型的操作:

  • SQL翻译(当你查询规则表,视图等)
  • 数据字典翻译(当您查询系统视图时)
  • 数据类型转换(例如Microsoft到Oracle日期的日期)

在使用JDBC的情况下,JDBC-ODBC桥使JDBC驱动程序与包含在DG4ODBC中的驱动程序完美兼容。因此,JDBC plus DG4ODBC允许您执行上述所有转换。

问题是,DG4MSQL使用专有的驱动程序,只有SQL翻译可以桥接到JDBC。

作为您的问题的解决方案,您可以尝试基于远程SQL Server系统视图在您的Oracle架构上创建本地视图。根据您的要求,您甚至可以将它们创建为物化视图。

CREATE OR REPLACE VIEW sys_services 
AS SELECT * 
FROM [email protected]; 

然后查询sys_services而不是直接查询[email protected]