Я пытаюсь отлаживать некоторый унаследованный код Integration Services, и действительно хочу некоторое подтверждение о том, что я думаю, что проблема:Uncommitted читает в SSIS
У нас есть очень большая задача данных внутри контейнера потока управления. Этот контейнер потока управления настроен с поддержкой TransactionOption = - то есть он будет «наследовать» транзакции из родительских контейнеров, но ни один из них не настроен здесь.
Внутри поток данных есть вызов хранимой процедуры, которая записывает в таблицу с псевдо кодом что-то вроде:
«Если запись не существует, что соответствует этим параметрам затем записать его»
Теперь проблема состоит в том, что в этот процесс все три файла передаются с такими же параметрами, поэтому логически первая запись не находит совпадения и создается запись. Вторая запись (с теми же параметрами) также не находит совпадения и создается другая запись.
Я понимаю, что первая «запись», переданная процессу в потоке данных, не допускается и, следовательно, не может быть «прочитана» вторым вызовом. В результате все три записи создают строку, когда логически только первая.
В этом случае я правильно понял, что это незафиксированная транзакция, которая останавливает второй вызов от первого? Даже установка уровня изоляции на контейнере не помогает, потому что она не завернута в транзакцию в любом случае ....
Надеюсь, что это имеет смысл, и любой совет с благодарностью получил. Рабочие круги наделяют вас божественным статусом.
Согласитесь, реальное решение предотвращает наличие дубликатов inteh первого места. – HLGEM
Это не дубликаты. Они представляют собой 3 дочерние записи, которые имеют родительский элемент, а потом дети используются в другом месте потока. – OldBoy
@OldBoy Я понимаю, что они легитимны, но вы можете агрегировать часть потока, входящую в создание строк. –