Транзакции SSIS с несколькими командами OLE DB - PullRequest
0 голосов
/ 02 февраля 2010

В моем пакете служб SSIS есть следующая задача «Поток данных»:

альтернативный текст 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

Я пробовал любой порядок условного разделения и все уровни IsolationLevel в настройках транзакции, но, похоже, ничего не работает. Если я делаю условное разбиение, использую только одну из ветвей, это работает нормально. Как поступить?

Ответы [ 2 ]

1 голос
/ 05 февраля 2010

Попробуйте заменить назначение SQL Server на «Назначение OLEDB» для вставок.

1 голос
/ 02 февраля 2010

SSIS настолько плох, что это заставляет меня кричать - Серьезно, вы должны проверить, является ли SSIS правильным инструментом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...