MS SSIS 下的 Oracle 事务

Posted

技术标签:

【中文标题】MS SSIS 下的 Oracle 事务【英文标题】:Oracle Transaction under MS SSIS 【发布时间】:2009-07-15 10:47:19 【问题描述】:

我试图让事务在 SSIS (SQL Server Integration Services 2005) 和 Oracle 下运行,但没有成功。我正在使用 Oracle 10g。

我创建了一个序列容器,将其 TransactionOption 设置为“Required”,并在其中放入一个 TransactionOption = “Supported”的 DataFlow 任务。

运行 SSIS 的服务器正在运行 MSDTC 服务。

DataFlow 任务具有作为源的 SQL Server OLEDB 连接和作为目标的 Oracle OLEDB 连接。

在尝试执行时,出现以下错误:

Error: 0xC001402C at MediaMarketAnnullamento, Connection manager "ITMASORASVIL:1521/SVILUPPO.EDP": The SSIS Runtime has failed to enlist the OLE DB connection in a distributed transaction with error 0x8004D01B "The Transaction Manager is not available.".

Error: 0xC0202009 at MediaMarketAnnullamento, Connection manager "ITMASORASVIL:1521/SVILUPPO.EDP": SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x8004D01B.

Error: 0xC020801C at 9999 - Insert_MAGAZZZINO_MM_SHOW, MAGAZZINO_MM_SHOW_SSIS [2187]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.  The AcquireConnection method call to the connection manager "ITMASORASVIL:1521/SVILUPPO.EDP" failed with error code 0xC0202009.  There may be error messages posted before this with more information on why the AcquireConnection method call failed.

Error: 0xC004701A at 9999 - Insert_MAGAZZZINO_MM_SHOW, DTS.Pipeline: component "MAGAZZINO_MM_SHOW_SSIS" (2187) failed the pre-execute phase and returned error code 0xC020801C.

Information: 0x40043009 at 9999 - Insert_MAGAZZZINO_MM_SHOW, DTS.Pipeline: Cleanup phase is beginning.

Information: 0x4004300B at 9999 - Insert_MAGAZZZINO_MM_SHOW, DTS.Pipeline: "component "MAGAZZINO_MM_SHOW_SSIS" (2187)" wrote 0 rows.

Task failed: 9999 - Insert_MAGAZZZINO_MM_SHOW

Information: 0x4001100C at 9999 - Insert_MAGAZZZINO_MM_SHOW: Aborting the current distributed transaction.

Information: 0x4001100C at Insert su Oracle: Aborting the current distributed transaction.

SSIS package "MediaMarketAnnullamento.dtsx" finished: Failure.

有什么帮助吗? 谢谢

编辑: 我刚刚发现运行 Oracle 的服务器并不是我想的那样基于 Windows,而是基于 IBM ICS。我不知道这是否相关。

【问题讨论】:

对我来说听起来应该更适合服务器故障。 不,这是编程相关的 我建议您避免使用 SSIS 事务。它阻止我使用工作连接。改为在 SSIS 中使用 SQL 事务。 【参考方案1】:

看起来这可能是 MSDTC 权限的问题this MS 博客文章可能有助于调试它。此外,我假设 Oracle 服务器上的权限设置正确,请参阅this MS kb 文章以获得帮助。

【讨论】:

我建议您避免使用 SSIS 事务。它阻止我使用工作连接。改为在 SSIS 中使用 SQL 事务。【参考方案2】:

这个文档有用吗?

http://msdn.microsoft.com/en-us/library/aa344212.aspx

【讨论】:

以上是关于MS SSIS 下的 Oracle 事务的主要内容,如果未能解决你的问题,请参考以下文章

Oracle07事务+Oracle访问其他用户下的对象

SSIS连接Oracle问题汇总

来自 Oracle 源的 SSIS

通过 SSIS 访问 Oracle 视图时出错

SSIS获取Oracle数据库数据

SqlServer传输数据到ORACLE,SSIS