0

我已经创建了一个从 oracle 到 sql(实现的异构服务)的 dblink 'POC_HS',并且我能够成功地从 DSN(for sql server)连接到的默认数据库中提取数据。

因此,这个“select * from Test@POC_HS”在 Oracle 数据库上运行良好,因为“Test”表位于默认数据库(系统 DSN 连接到该数据库)中。

但是,当我执行 'select * Abc.Test@POC_HS' 其中测试表驻留在不是默认数据库的 'ABC' 数据库中时,会引发如下错误:

ORA-00942: 表或视图不存在 [使用 ODBC 的通用连接][Microsoft][ODBC SQL Server Driver][SQL Server]无效的对象名称 'Abc.Test'。[Microsoft][ODBC SQL Server Driver][SQL Server ]无法准备声明。(SQL 状态:S0002;SQL 代码:208)

dblink 用户和系统 DSN 帐户可以访问“Abc”数据库。

想法?

4

2 回答 2

0

在这里回答 - http://forums.oracle.com/forums/message.jspa?messageID=9794581

ODBC Sql Server 驱动程序不允许跨数据库查询,每次要查询不同的数据库时都必须更改 odbc 默认数据库。

于 2011-08-11T11:26:05.563 回答
0

一个对象的完整路径是Database.Schema.Object,所以我猜你应该写这样的东西:

select * 
from Abc.dbo.Test@POC_HS

当然,替换dbo为实际的模式名称。

于 2011-08-10T14:37:45.867 回答