小编mik*_*imr的帖子

从SQL Server查询Oracle数据库

我有一个Oracle 11g XE数据库,我想将其转移到SQL Server Express 2005中.

起初我以为我只是在Oracle中生成表作为SQL,操纵数据格式,并在SQL Server中运行查询.这适用于小型表,但我有几个表有几十万行,有些表有数百万行,所以这个解决方案不起作用.

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

OracleTnsName = 
(
  DESCRIPTION=
  (
    ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521)
  )
  (
    CONNECT_DATA = (SERVICE_NAME=XE)
  )
)
Run Code Online (Sandbox Code Playgroud)

我按照我在别处找到的关于如何生成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'
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用openquery以下方法从SQL Server查询Oracle数据库中的表:

select * from openquery(OracleLinkServer, 'select * from oracleTable')
Run Code Online (Sandbox Code Playgroud)

但得到一个错误:

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

当我检查链接服务器的属性,只需单击确定,我收到此错误:

标题:Microsoft SQL …

sql-server oracle oledb tnsnames openquery

5
推荐指数
1
解决办法
5万
查看次数

标签 统计

oledb ×1

openquery ×1

oracle ×1

sql-server ×1

tnsnames ×1