繁体   English   中英

尝试在MS SQL 2005上使用链接服务器从Oracle导入大数据

[英]Trying to import large data from Oracle using a Linked Server on MS SQL 2005

我正在尝试使用MS SQL 2005上的链接服务器从Oracle数据库中导入大量数据。这是OPENQUERY命令。

SELECT * from OPENQUERY(HRDEV9, 
        'SELECT EMPLOYEE_ID
          ,EMPLOYEE_NAME
          ,TO_CHAR(BIRTHDATE,''yyyy-mm-dd'') AS BIRTHDATE
        FROM SYSADM.PS_EMPLOYEES')

为了使示例简单起见,我没有包括所有列,我有大约180列和75000行要导入。

这是我执行查询时遇到的错误:

链接服务器“ HRDEV9”的OLE DB提供程序“ OraOLEDB.Oracle”返回消息“没有足够的存储空间来完成此操作。”。

消息7399,级别16,状态1,行1链接服务器“ HRDEV9”的OLE DB提供程序“ OraOLEDB.Oracle”报告了一个错误。 提供程序内存不足。

消息7372,级别16,状态4,行1无法从链接服务器“ HRDEV9”的OLE DB提供程序“ OraOLEDB.Oracle”获得属性。

我已启用自动增长,并为数据和日志文件设置了不受限制的文件增长。

我尝试使用Oracle ROWNUM仅导入10行,但仍然遇到相同的错误。

感谢您的时间。

尝试将数据从Oracle导入CSV,然后将其加载到MS SQL。 很抱歉将您引到我的博客,但这是如何从Oracle快速获取数据。

我发布此消息是为了帮助其他人解决相同的问题。

显然,这是Microsoft确认的错误。 如果链接的表包含NUMERIC类型的列,则会出现错误消息。 解决方法是重新创建链接服务器,以将Microsoft OLE DB提供程序用于ODBC(MSDASQL)。

您可以通过以下两种方法来解决此问题:

使用Microsoft提供的ORACLE的ODBC驱动程序:

EXEC sp_addlinkedserver @server = 'ORACLEODBC', @srvproduct = 'MSDASQL', @provider = 'MSDASQL',
 @provstr = 'DRIVER={Microsoft ODBC for Oracle};SERVER=MyOracleServer;UID=USERNAME;PWD=Password;'
go

sp_addlinkedsrvlogin 'ORACLEODBC', false, NULL, 'USERNAME', 'Password'

-要么-

使用ORACLE提供的ORACLE ODBC驱动程序:

EXEC sp_addlinkedserver @server = 'ORACLEODBC', @srvproduct = 'MSDASQL', @provider = 'MSDASQL',
 @provstr = 'DRIVER={ORACLE ODBC DRIVER};SERVER=MyOracleServer;UID=USERNAME;PWD=Password;DBQ=ORACLE805;' 
go

sp_addlinkedsrvlogin 'ORACLEODBC', false, NULL, 'USERNAME', 'Password'

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM