Неподтвержденные чтения в SSIS - PullRequest
0 голосов
/ 03 июня 2010

Я пытаюсь отладить некоторый устаревший код служб Integration Services и действительно хочу получить подтверждение того, в чем, на мой взгляд, проблема:

У нас есть очень большая задача данных внутри контейнера потока управления. Этот контейнер потока управления настроен с TransactionOption = поддерживается - то есть он будет «наследовать» транзакции от родительских контейнеров, но здесь не настроено ни одного.

Внутри потока данных есть вызов хранимого процесса, который записывает в таблицу с псевдокодом что-то вроде:

"Если запись, которая соответствует этим параметрам, не существует, напишите ее"

Теперь проблема в том, что в этот процесс передаются три записи с одинаковыми параметрами, поэтому логически первая запись не находит соответствия, и запись создается. Вторая запись (с теми же параметрами) также не находит соответствия, и создается другая запись.

Насколько я понимаю, первая «запись», переданная в процесс в потоке данных, не передана и, следовательно, не может быть «прочитана» при втором вызове. В результате все три записи создают строку, когда логически должна быть только первая.

В этом сценарии я прав, полагая, что именно незафиксированная транзакция не дает второму вызову увидеть первый? Даже установка уровня изоляции для контейнера не помогает, потому что он все равно не включен в транзакцию ....

Надеюсь, что это имеет смысл, и любой совет с благодарностью получен. Обходы дают вам божественный статус.

Ответы [ 2 ]

2 голосов
/ 03 июня 2010

Является ли поток слишком большим, чтобы сначала пропустить все эти строки через агрегат, чтобы исключить дубликаты?

0 голосов
/ 14 июня 2010

Если изменения находятся внутри одной транзакции, они должны быть видны друг другу. И я не думаю, что SSIS создаст транзакцию на оператор / вызов SP, поэтому я считаю, что проблема в другом.

...