6

我有一个 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)
  )
)

我按照我在其他地方找到的有关如何生成 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 行
链接服务器“OracleLinkServer”的 OLE DB 提供程序“MSDASQL”报告错误。提供商没有提供有关该错误的任何信息。
消息 7303,级别 16,状态 1,第 1 行
无法初始化链接服务器“OracleLinkServer”的 OLE DB 提供程序“MSDASQL”的数据源对象。

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

标题:Microsoft SQL Server Management Studio Express

“链接服务器已更新,但连接测试失败。您要编辑链接服务器属性吗?”


附加信息:

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


链接服务器“OracleLinkServer”的 OLE DB 提供程序“MSDASQL”报告错误。提供商没有提供有关该错误的任何信息。无法为链接服务器“OracleLinkServer”初始化 OLE DB 提供程序“MSDASQL”的数据源对象。(Microsoft SQL Server,错误:7399)

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


纽扣:

&是的

&不

请帮忙!

谢谢

4

3 回答 3

1

如果您已成功添加链接服务器,则不再需要OPENQUERY. 您可以将链接服务器名称作为限定名称的第一部分包括在内,如下所示:

SELECT * FROM OracleLinkServer.database.schema.table

不确定您需要哪些部分,但点是关键。先试试这个:

SELECT * FROM OracleLinkServer...oracleTable
于 2012-07-03T11:19:36.267 回答
0
select * 
from [server]..[xxx].[yyyyy] 

这个对我有用。

于 2014-03-25T07:29:37.873 回答
0

改变

,@provider = 'MSDASQL'

,@provider = 'MSDAORA'
于 2016-09-22T11:27:49.160 回答