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 表不存在之外的所有错误,停止运行存储过程
获取 ORA-00942:在 Java 中使用 Blob 的表或视图不存在
java.sql.SQLSyntaxErrorException:ORA-00942:netbeans 8.0.1 中的表或视图不存在错误消息