1

I am trying to design a process that transfers data from Oracle to SQL Server 2016 by using SSIS. It is done with the aim of removing productive processes from an SQL Server 2000 instance, where the transfer had been realized with a Linked Server.

The transfer I designed in SSIS process is slow.

I tried using the "Native OLE DB\Microsoft OLE DB Provider for Oracle" as well as the "Native OLE DB\Microsoft OLE DB Provider for Oracle" OLEDB connection.

The result is, that it takes about a minute to transfer 9,934 records of a data set that spans 28,228472 rows.

I tried using the "Oracle Source" component with an "Oracle Connection Manager".

The result is, I can test the connection, as well as design the process and even preview the result set. As soon as I run the package in my Visual Studio, it states the error: "The component metadata for could not be upgraded to the newer version of the component. The PerformUpgrade method failed."

I need to be able to transfer the date in a reasonable amount of time.
The environment I am using is as follows:

Visual Studio: Visual Studio 2019 16.2.0
SSIS project compatibility mode is: SQL Server 2016

Targeted SQL Server: SQL Server 2016 (13.0.5233.0)
The SSIS package will be run on: SQL Server 2016 (13.0.5264.1)

The Oracle environment is:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production

4

2 回答 2

1

我设法解决了性能问题,并确保传输了总量数据。

我放弃了使用 OLEDB 连接,转而使用“ADO NET”连接。我使用“.Net Providers\OracleClient Data Provider”作为源,使用“.Net Providers\SqlClient Data Provider”作为目标。

ADO.net 源和连接提供了一致的数据传输性能并确实获得了所有记录。SQL Server 之间的传输仍然可以通过 OLEDB 连接更好地工作。ADO 源和 OLEDB 目标之间的传输需要非 unicode 到 unicode 的转换。

于 2019-08-21T15:33:07.457 回答
1

我建议为您的 oledb 目的地使用“表格或视图 - 快速加载”模式。

并使用带有查找转换的“upsert”数据流来最小化数据写入 I/O。

如果可能,请使用“完整缓存”作为查找模式(需要 RAM)。

这里有一些其他的提示可能会有所帮助。

在此处输入图像描述

于 2019-08-20T16:13:10.433 回答