Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL Server 2008 R2中的链接服务器(Oracle)运行查询_Oracle_Sql Server 2008_Linked Server - Fatal编程技术网

从SQL Server 2008 R2中的链接服务器(Oracle)运行查询

从SQL Server 2008 R2中的链接服务器(Oracle)运行查询,oracle,sql-server-2008,linked-server,Oracle,Sql Server 2008,Linked Server,我在SQLServer2008中设置了链接服务器。但我无法对链接服务器运行任何查询 我试图运行这个简单的命令,但它不起作用 SELECT * FROM MYSERVER..ALANH.TEMP_UPDATE1 这是我在运行上述命令时遇到的错误 Msg 7399, Level 16, State 1, Line 1 The OLE DB provider "OraOLEDB.Oracle" for linked server "MYSERVER" reported an error. The

我在SQLServer2008中设置了链接服务器。但我无法对链接服务器运行任何查询

我试图运行这个简单的命令,但它不起作用

SELECT * FROM MYSERVER..ALANH.TEMP_UPDATE1
这是我在运行上述命令时遇到的错误

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "OraOLEDB.Oracle" for linked server "MYSERVER" reported an error. The provider did not give any information about the error.
Msg 7312, Level 16, State 1, Line 1
Invalid use of schema or catalog for OLE DB provider "OraOLEDB.Oracle" for linked server "MYSERVER". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.

有人能帮我连接到OracleLinkedServer吗?非常感谢。

您可以从中尝试修复

此外,这可能是命名方面的问题。从

如果收到这些错误消息,则列表中可能缺少一个表 或者您可能没有该表的权限。验证 已使用大写字母键入架构名称。这个 表和列的字母大小写应如下所示 在Oracle系统表中指定

在Oracle端,创建的表或列没有双精度 引号以大写形式存储。如果表或列是 表或列用双引号括起来存储 原来如此


首先确保tnsping实用程序在客户机服务器上工作,然后在链接服务器数据库源设置中使用以下字符串

host[:port]/service_name 
有关详细信息,请查看此链接:


你也可以这样:

**SELECT * FROM OPENQUERY(MYSERVER, 'SELECT * FROM ALANH.TEMP_UPDATE1')**

试着这样做:

SELECT * FROM ALL_TABLES@"SOME.SERVER.NAME";
select * FROM [MYSERVER]..[ALANH].[TEMP_UPDATE1]

在本例中,我从名为SOME.server.NAME的链接服务器中选择所有表。

您可以这样编写查询:

SELECT * FROM ALL_TABLES@"SOME.SERVER.NAME";
select * FROM [MYSERVER]..[ALANH].[TEMP_UPDATE1]

重要提示:在这种情况下,完全限定的表名必须用大写字母书写。

Richard的上述帖子非常关键

我使用的是v12 ODP.NET odbc驱动程序,必须确保未选中“仅限零级”,并且为表和架构提供的名称大小写正确。我访问的所有模式和表都是大写的

使用下面的查询来确定正确的表名是什么,不过您必须以正确的大小写提供模式名,查询才能工作。试试全大写、全小写、混合大小写,或者更好地从dba获取实际名称(我听说只有带“”引号的表/架构名称才允许混合大小写,否则在oracle中都是大写)


sp_tables_ex@table_server=InsertLinkedServerHere,@table_schema=InsertSchemaNameHere

与此类似的是Oracle端的语法