具有多个OLE DB命令的SSIS事务

时间:2010-02-02 03:11:41

标签: sql-server ssis transactions

我的SSIS包中有以下数据流任务:

alt text http://img228.imageshack.us/img228/358/ssis1.png

它从外部供应商处读取一个文件,该文件的记录带有“更改”列,用于添加,更改和删除A,C或D.我必须在我的SQL Server数据库中处理这些。条件拆分检查更改列的值,并将该行发送到适当的命令。这很好。

因为输入文件有时会包含错误,所以我希望这个过程是事务性的(有10个这样的数据流任务)。

如果我在SSIS包上启用事务,但OLE DB命令似乎互相干扰(它们不在相同的行上运行)。我收到错误:

Error: 2010-02-02 12:21:08.39
   Code: 0xC0202009
   Source: name OLE DB Command 1 [58]
   Description: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred.
 Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0
"  Hresult: 0x80004005  Description: "This operation conflicts with another pend
ing operation on this transaction. The operation failed.".
End Error
Error: 2010-02-02 12:21:08.39
   Code: 0xC004701A
   Source: name SSIS.Pipeline
   Description: component "OLE DB Command 1" (58) failed the pre-execute phase
 and returned error code 0xC0202009.
End Error
Progress: 2010-02-02 12:21:08.39

我在事务设置上尝试了条件拆分和所有IsolationLevels的任何顺序,但似乎没有任何效果。如果我进行条件拆分只使用其中一个分支,它可以正常工作。 怎么办?

2 个答案:

答案 0 :(得分:1)

SSIS非常糟糕让我尖叫 - 说真的,你应该重新审视SSIS是否是正确的工具

答案 1 :(得分:1)

尝试使用插入的“OLEDB Destination”替换SQL Server Destination。