查询从SQL Server Oracle数据库(Querying an Oracle databas

2019-06-26 00:00发布

我有我想转入的SQL Server Express 2005的的Oracle 11g XE数据库。

起初,我以为我只是生成Oracle中的表作为SQL,操纵数据格式,并运行在SQL Server查询。 这个工作对小桌子,但我有几百几千行和一些与数百万行的几个表,因此该解决方案将无法工作。

然后,我创建了包含以下内容的TNS文件:

OracleTnsName = 
(
  DESCRIPTION=
  (
    ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521)
  )
  (
    CONNECT_DATA = (SERVICE_NAME=XE)
  )
)

我跟着我发现如何生成ODBC连接其他地方的说明,和“测试连接”是成功的。

然后我跑以下命令来创建在MS SQL链接服务器:

EXEC sp_addlinkedserver 
     @server            = 'OracleLinkServer'
    ,@srvproduct        = 'OracleTnsName'
    ,@provider          = 'MSDASQL'
    ,@datasrc           = 'OracleTnsName'

EXEC sp_addlinkedsrvlogin 
     @rmtsrvname        = 'OracleLinkServer'
    ,@useself           = 'False'
    ,@locallogin        = NULL
    ,@rmtuser           = 'user'
    ,@rmtpassword       = 'password'

现在,我想查询表从SQL Server使用Oracle数据库openquery

select * from openquery(OracleLinkServer, 'select * from oracleTable')

但得到一个错误:

消息7399,级别16,状态1,第1行
OLE DB提供程序“MSDASQL”链接服务器“OracleLinkServer”报告错误。 提供程序未给出有关错误的任何信息。
消息7303,级别16,状态1,第1行
无法初始化OLE DB提供程序“MSDASQL”链接服务器“OracleLinkServer”的数据源对象。

当我检查链接服务器的属性,只要按一下就OK了,我得到这个错误:

标题:Microsoft SQL Server管理Studio速成

“链接的服务器已经更新,但无法连接测试,你要编辑的链接服务器属性?”


附加信息:

执行Transact-SQL语句或批处理时出现异常。 (Microsoft.SqlServer.Express.ConnectionInfo)


OLE DB提供程序“MSDASQL”链接服务器“OracleLinkServer”报告错误。 提供程序未给出有关错误的任何信息。 无法初始化OLE DB提供程序“MSDASQL”链接服务器“OracleLinkServer”的数据源对象。 (微软SQL服务器,错误:7399)

如需帮助,请点击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.5000&EvtSrc=MSSQLServer&EvtID=7399&LinkId=20476


纽扣:

&是

&没有

请帮忙!

谢谢

Answer 1:

如果您已成功添加您的链接的服务器,您不再需要OPENQUERY 。 你可以只包括链接服务器名称作为像这样的限定名称的第一部分:

SELECT * FROM OracleLinkServer.database.schema.table

不知道你需要的部分,但点是关键。 先试试这个:

SELECT * FROM OracleLinkServer...oracleTable


Answer 2:

select * 
from [server]..[xxx].[yyyyy] 

这个对我有用。



Answer 3:

更改

,@provider = 'MSDASQL'

,@provider = 'MSDAORA'


文章来源: Querying an Oracle database from SQL Server