SSIS DataReader 从大型机失败

Posted

技术标签:

【中文标题】SSIS DataReader 从大型机失败【英文标题】:SSIS DataReader fail from Mainframe 【发布时间】:2012-05-02 18:08:52 【问题描述】:

我有一个 ADO.Net 连接,它使用 ODBC 数据源连接到我们的大型机。当它连接到 DataReader 源时,Datareader 立即失败。我假设至少连接工作正常,因为 SqlCommand 中的 Select * From(不是我正在使用的)将正确显示列映射下的所有可用列。当试图转储到一个简单的平面文件时,我明白了。

SSIS package "MainframeTest.dtsx" starting.
Information: 0x4004300A at Data Flow Task, DTS.Pipeline: Validation phase is beginning.
Information: 0x4004300A at Data Flow Task, DTS.Pipeline: Validation phase is beginning.
Information: 0x40043006 at Data Flow Task, DTS.Pipeline: Prepare for Execute phase is beginning.
Information: 0x40043007 at Data Flow Task, DTS.Pipeline: Pre-Execute phase is beginning.
Information: 0x402090DC at Data Flow Task, Flat File Destination [191]: The processing of file "C:\Documents and Settings\BBSA322\Desktop\LogFile.txt" has started.
Information: 0x4004300C at Data Flow Task, DTS.Pipeline: Execute phase is beginning.
Error: 0xC02090F5 at Data Flow Task, DataReader Source [1]: The component "DataReader Source" (1) was unable to process the data.
Error: 0xC0047038 at Data Flow Task: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The PrimeOutput method on component "DataReader Source" (1) returned error code 0xC02090F5.  The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.  There may be error messages posted before this with more information about the failure.
Error: 0xC0047021 at Data Flow Task: SSIS Error Code DTS_E_THREADFAILED.  Thread "SourceThread0" has exited with error code 0xC0047038.  There may be error messages posted before this with more information on why the thread has exited.
Error: 0xC0047039 at Data Flow Task: SSIS Error Code DTS_E_THREADCANCELLED.  Thread "WorkThread0" received a shutdown signal and is terminating. The user requested a shutdown, or an error in another thread is causing the pipeline to shutdown.  There may be error messages posted before this with more information on why the thread was cancelled.
Error: 0xC0047021 at Data Flow Task: SSIS Error Code DTS_E_THREADFAILED.  Thread "WorkThread0" has exited with error code 0xC0047039.  There may be error messages posted before this with more information on why the thread has exited.
Information: 0x40043008 at Data Flow Task, DTS.Pipeline: Post Execute phase is beginning.
Error: 0xC0047018 at Data Flow Task, DTS.Pipeline: component "DataReader Source" (1) failed the post-execute phase and returned error code 0x8007000E.
Error: 0xC0047018 at Data Flow Task, DTS.Pipeline: component "DataReader Source" (1) failed the post-execute phase and returned error code 0x8007000E.
Information: 0x402090DD at Data Flow Task, Flat File Destination [191]: The processing of file "C:\Documents and Settings\BBSA322\Desktop\LogFile.txt" has ended.
Information: 0x40043009 at Data Flow Task, DTS.Pipeline: Cleanup phase is beginning.
Error: 0xC004701B at Data Flow Task, DTS.Pipeline: component "DataReader Source" (1) failed the cleanup phase and returned error code 0x8007000E.
Information: 0x4004300B at Data Flow Task, DTS.Pipeline: "component "Flat File Destination" (191)" wrote 0 rows.
Error: 0xC0047037 at Data Flow Task, DTS.Pipeline: component "DataReader Source" (1) failed during shut down and returned error code 0x8007000E. A component failed to release its interfaces.
Task failed: Data Flow Task
Warning: 0x80019002 at MainframeTest: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED.  The Execution method succeeded, but the number of errors raised (9) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "MainframeTest.dtsx" finished: Failure.

【问题讨论】:

主机上的数据库是什么? 源 RDBMS 中的数据类型是什么,它们如何映射到数据流中的列?您是否碰巧将事务级别从默认的 Supported 更改为 Required? 一切都是DT_WSTR,和平面文件一样,还是支持事务级的。老实说,此时我只是想从大型机中取出任何东西,所以我只提取了两列。 想通了。这是 .Net 框架更新的问题。您可以通过将文本文件添加到数据阅读器的错误输出来解决此问题。在这里找到了答案。 blogs.msdn.com/b/sqlblog/archive/2009/04/09/… 【参考方案1】:

发现这是 .Net 框架更新的问题。在错误输出中添加一个文本文件解决了这个问题。

在这里找到答案。

http://blogs.msdn.com/b/sqlblog/archive/2009/04/09/after-installation-of-net-framework-3-5-sp1-or-net-framework-2-0-sp2-ssis-packages-using-odbc-3rd-party-drivers-may-fail.aspx

【讨论】:

以上是关于SSIS DataReader 从大型机失败的主要内容,如果未能解决你的问题,请参考以下文章

从 SSIS 调用时删除语句失败

从 Access 2007 导入 SSIS 失败

将 DataReader 重新用于另一个连接

某大型银行电子渠道报表系统SSIS ETL优化报告

从 SQL 代理运行时 SSIS 脚本任务失败

SSIS失败时失败