Тупик SSIS с медленно меняющимся измерением

Я запускаю пакет SSIS, который содержит множество (7) операций чтения из одного плоского файла, загруженного из внешнего источника. В каждой среде (тестовой, подготовительной и производственной) постоянно наблюдается тупик в одном из потоков данных, который использует медленно изменяющееся измерение для обновления существующей таблицы SQL как новыми, так и измененными строками. У меня три группы выходят из SCD  Поток данных SSIS :

-Inferred Member Updates Выходные данные передаются непосредственно команде обновления OLE DB.

-Исторический атрибут переходит к производному столбцу, помещенному в рамку, который устанавливает дату удаления, а затем переходит к команде обновления OLE DB, затем переходит к объединенному окну, где он объединяется с последней группой Новый вывод.

-Новый вывод попадает в поле объединения вместе с выводом истории, затем в поле производного столбца, которое добавляет дату обновления / создания, а затем вставляет значения в ту же таблицу SQL, что и команда базы данных вывода предполагаемых элементов.

Единственная ошибка, которую я получаю в журнале, выглядит так:

«Транзакция (идентификатор процесса 170) зашла в тупик при блокировке ресурсов с другим процессом и была выбрана жертвой тупиковой ситуации. Повторите транзакцию».

Я мог бы поместить оператор (NOLOCK) в команды OLE db, но я читал, что это не выход.

Я использую инструменты данных SQL Server 2012 для исследования и редактирования пакета, но я не уверен, что делать дальше, чтобы найти проблему.

Я хочу сказать, что я новичок в программировании SSIS ... с этим в стороне ... Любая помощь будет принята с благодарностью, даже если она просто указывает мне на место, которое я не смотрел за помощью.


person tCoe    schedule 26.09.2017    source источник
comment
Опубликуйте свой пакет SSIS, уровень изоляции по умолчанию. Вы используете транзакцию в SSIS?   -  person Lukasz Szozda    schedule 26.09.2017
comment
В любом случае, медленно меняющееся измерение невероятно медленно для больших наборов данных. Рассмотрите возможность использования подхода, основанного на наборах.   -  person Lukasz Szozda    schedule 26.09.2017
comment
@ lad2025 Мне не разрешено публиковать пакет, поскольку он содержит строки подключения и пароли ... будучи новичком, я попытаюсь воссоздать объект потока данных, в котором возникла проблема.   -  person tCoe    schedule 26.09.2017
comment
Я имел в виду печатный экран управления / потока данных.   -  person Lukasz Szozda    schedule 26.09.2017
comment
@ lad2025 Я добавил снимок экрана потока данных, для второго комментария я его не создавал и поэтому не могу изменить его без точного плана, почему и как. Прямо сейчас я не уверен, почему он зашел в тупик. Скорость - не проблема, потому что на самом деле она влияет только на одну таблицу и около 150-200 записей в день.   -  person tCoe    schedule 26.09.2017
comment
@tCoe ключевой момент (если вы хотите воссоздать проблему) - это модель данных и сами данные. Поместите исходную модель и структуру целевой таблицы (включая индексы) и все 7 строк из источника. Что это за тип SCD? Вы пробовали использовать мастер слияния SCD вместо SSIS?   -  person Kamil Nowinski    schedule 10.01.2018


Ответы (1)


Добавление индекса в столбец условия WHERE может решить вашу проблему. После добавления индекса в столбец транзакции будут выполняться быстрее, что снизит вероятность тупиковой ситуации.

person Ajit Medhekar    schedule 11.04.2021