我正在尝试使用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” 消息“没有足够的存储空间来完成此操作。”。
Msg 7399,Level 16,State 1,Line 1 OLE DB提供程序 链接服务器“HRDEV9”的“OraOLEDB.Oracle”报告错误。该 提供商内存不足。
Msg 7372,Level 16,State 4,Line 1不能 从OLE DB提供程序“OraOLEDB.Oracle”获取属性以进行链接 服务器“HRDEV9”。
我启用了自动增长功能,并为数据和日志文件设置了无限制的文件增长。
我尝试使用Oracle ROWNUM仅导入10行但仍然遇到相同的错误。
感谢您的时间。
答案 0 :(得分:0)
尝试将数据从Oracle导入CSV,然后将其加载到MS SQL中。 很抱歉将您指向我的博客,但here is how to get data fast from Oracle.
答案 1 :(得分:0)
我发布此信息是为了帮助其他人解决同样的问题。
显然这是Microsoft确认的错误。如果链接表包含NUMERIC类型的列,则会出现错误消息。 解决方法是重新创建链接服务器以使用Microsoft OLE DB Provider for 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'
<强> -OR - 强>
使用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'
希望这有帮助。