ORA-00942: 从异构服务的表中选择某些内容时,表或视图不存在

Posted

技术标签:

【中文标题】ORA-00942: 从异构服务的表中选择某些内容时,表或视图不存在【英文标题】:ORA-00942: table or view does not exist when Selecting something from a table from a heterogenous service 【发布时间】:2017-04-11 14:42:59 【问题描述】:

我需要从 SQL Server 数据库中可用的表中选择 Oracle 数据库中的表数据。因此,我创建了一个指向该 Oracle 数据库的数据库链接,如http://www.dba-oracle.com/t_database_link_sql_server_oracle.htm 中所述。

数据库链接工作正常,因为我可以使用以下命令显示此数据库链接中的所有表:

select * 
from all_tables@mssql_link

例如,我得到一个表,表名是“adr”,所有者是“dbo”。

因此,如果我尝试通过

从该表中选择所有内容
select * from dbo.adr@mssql_link 

或通过

select * from "dbo"."adr"@mssql_link 

select * from adr@mssql_link 

我总是得到一个 Oracle 异常:

ORA-00942: 表或视图不存在 [Microsoft][ODBC SQL Server Driver][SQL Server]无效的对象名称“DBO.ADR”。 42S02,NativeErr = 208[Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) 无法准备。 42000,NativeErr = 8180 ORA-02063:来自 MSSQL_LINK 的前 2 行

我通过创建公共数据库链接 mssql_link 使用“mssql01”连接到由“[PASSWORD]”标识的“[dbUser]”创建了数据库链接;

有人知道那里发生了什么吗?

【问题讨论】:

我不了解 SQLServer,但如果这发生在 Oracle 数据库上,您的用户没有选择访问相关表的权限。您的链接设置为以特定用户身份连接。该用户是否具有对相关表的适当访问权限。 【参考方案1】:

试试openquery函数,像这样:

select * from openquery(mssql_link, 'Select * from adr')

【讨论】:

不幸的是,我在执行该命令时收到 ORA-00933 SQL 命令未正确结束异常。 引号中的内容与 Oracle 中的内容完全相同。

以上是关于ORA-00942: 从异构服务的表中选择某些内容时,表或视图不存在的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00942: 使用 iBatis 的表或视图不存在

对于除 ORA-00942 表不存在之外的所有错误,停止运行存储过程

获取 ORA-00942:在 Java 中使用 Blob 的表或视图不存在

java.sql.SQLSyntaxErrorException:ORA-00942:netbeans 8.0.1 中的表或视图不存在错误消息

Spark:从异构数据中写入 Paquet

在函数调用时从异构初始化列表构建元组