繁体   English   中英

SSIS 从 Oracle 到 SQL 服务器的数据加载不完整

[英]SSIS incomplete data load from Oracle to SQL Server

I have a SSIS DFT that decided to break that's responsible for moving data from Oracle 12c to SQL Server 2016 with no intermediary task - it just executes a fairly simple query using a date range against Oracle and inserts to a staging table on SQL Server with fast加载。 在记录超过约 250 万的日子里,尽管验证了 Oracle 预计的约 300 万条记录,但该任务将在向 SQL 服务器写入许多完全可被缓冲区大小整除的记录后报告成功。

Oracle 源使用 32 位 Oracle OLE DB 提供程序,SQL 服务器使用 32 位MSOLEDBSQL提供程序。 我目前无法测试 64 位驱动程序以查看它是否能解决问题。 DFT 当前设置为AutoAdjustBufferSize为 true, DefaultBufferMaxRows为 50k。 暂存表设置为所有列都定义为VARCHAR ,即使源列不是,所以会发生一些隐式转换。 package 通过运行 TWS 的调度服务器执行,它只指向一个包含传递给 DTEXEC 实用程序的参数值的 bat 脚本。

我已经尝试测试对AutoAdjustBufferSizeDefaultBufferMaxRows 、最大插入提交大小、每批行数以及附加到 Oracle 连接字符串UseSessionFormat=True的更改(一些类似的问题已成功执行此操作)。 到目前为止,还没有解决这个问题。

有没有其他人遇到过这个问题并找到了解决方案以及根本问题是什么?

我设法找到了解决问题的方法。 Oracle OLE DB 提供程序具有一个名为FetchSize的可选连接字符串属性。 该值默认为 100,可以通过 reg 键条目或通过修改 Oracle 连接字符串来修改。 它会影响获取的行数并影响到数据库的往返行程。 就我而言,我使用 XML 配置文件修改了连接字符串,并将FetchSize值设置为 5,000。 增加FetchSize允许 DFT 移动所有记录。

可以在此处找到有关 Oracle OLE DB 提供程序连接字符串属性的更多信息。

暂无
暂无

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

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