我正在尝试使用DG4MSQL网关创建从Oracle 11g到SQL Server 2005的数据库链接。
创建数据库链接后,我无法使用JDBC驱动程序查询SQL Server系统视图(sys.services或sys.objects),但可以使用JDBC驱动程序查询所有用户表。
如果使用sqlplus,则可以查询所有表,包括系统表。由于我的项目是Java项目,因此我必须使用JDBC驱动程序。
我还发现,如果我使用DG4ODBC而不是DG4MSQL网关,则可以使用JDBC驱动程序查询所有SQL Server表,包括系统表。
请让我知道是否可以使用DG4MSQL和JDBC驱动程序查询SQL Server系统表?
最佳答案
这个解释有点棘手
Oracle Gateway执行3种类型的操作:
如果是JDBC,则JDBC-ODBC桥使JDBC驱动程序与DG4ODBC中包含的驱动程序完全兼容。因此,JDBC加DG4ODBC允许您执行上述所有转换。
问题在于DG4MSQL使用专有的驱动程序,并且只有SQL转换可以桥接到JDBC。
作为解决此问题的方法,您可以尝试基于远程SQL Server系统视图在Oracle模式上创建本地视图。根据您的要求,您甚至可以将它们创建为实例化视图。
CREATE OR REPLACE VIEW sys_services
AS SELECT *
FROM sys.services@dblink;
然后查询
sys_services
而不是直接查询sys.services@dblink