powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параллельное выполнение SSIS пакета
25 сообщений из 26, страница 1 из 2
Параллельное выполнение SSIS пакета
    #39713329
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые форумчане.
Пытаюсь распараллелить пакет, но получаю следующие ошибки
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[DWH ContactInformation [14]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.  The AcquireConnection method call to the connection manager "1cdev.DWH" failed with error code 0xC0202009.  There may be error messages posted before this with more information on why the AcquireConnection method call failed.
[DWH LoanContracts [80]] Error: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80040E14.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80040E14  Description: "Нефиксируемая транзакция обнаружена в конце пакета. Был выполнен откат транзакции.".
[DWH LoanContracts [80]] Error: 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 11.0"  Hresult: 0x80004005  Description: "Распределенная транзакция завершена. Прикрепите этот сеанс к новой транзакции или транзакции NULL.".
[DWH LoanContracts [80]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "DWH LoanContracts.Inputs[OLE DB Destination Input]" failed because error code 0xC020907B occurred, and the error row disposition on "DWH LoanContracts.Inputs[OLE DB Destination Input]" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "DWH LoanContracts" (80) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (93). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.
[Execute SQL Task] Error: Executing the query "UPDATE [dbo].[SalesContracts]
SET Active = 0
FROM ..." failed with the following error: "Координатор распределенных транзакций (Microsoft) (MS DTC) отменил распределенную транзакцию.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Error: The SSIS Runtime has failed to enlist the OLE DB connection in a distributed transaction with error 0x8004D00A "Принять участие в этой транзакции не удалось.".



Пытался нарыть информацию на форумах, но ничего не помогло.
MSDTC включена. Если переделать на последовательно выполнение, то все выполняется без ошибок.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713371
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ZarodovMSDTC включена.А вам нужно всё выполнять в одной распределённой транзакции?
Если нет, то, может, установить TransactionOption в NotSupported?
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713377
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

да, нужно, т.к. если в любом из блоков появляется ошибка, требуется откатить все предыдущие шаги.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713403
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodovalexeyvg,

да, нужно, т.к. если в любом из блоков появляется ошибка, требуется откатить все предыдущие шаги.

Пишите в промежуточные таблицы и последним шагом делайте switch/merge.
Обычно это проще и надежнее, чем распределенные транзакции настраивать и поддерживать.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713408
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Zarodovalexeyvg,

да, нужно, т.к. если в любом из блоков появляется ошибка, требуется откатить все предыдущие шаги.
Похоже, что оба сбойных блока - "Shift LeasingContracts" и "Shift LoanContracts" - используют или ссылаются на одну таблицу.
Если не переделывать все на использование merge, попробуйте компромиссный вариант - установить "Shift LeasingContracts" и "Shift LoanContracts" последовательно, а дальнейшие шаги - параллельно как в текущем варианте.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713410
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrus,

а в чем профит? Это итак загрузка из staging area в целевую базу.

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

Ну хорошо, перегружу я их в промежуточные (опять же, последовательно одну за другой, несмотря на то, что многие друг от друга не зависят, но зависят от первых сущностей). Дальше что? Последовательно перегружать в целевую базу? Но с таким успехом я могу не использовать еще один промежуточный, а просто последовательно грузить из Staging Area в целевую.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713412
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodovtarrus,

а в чем профит? Это итак загрузка из staging area в целевую базу.

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

Ну хорошо, перегружу я их в промежуточные (опять же, последовательно одну за другой, несмотря на то, что многие друг от друга не зависят, но зависят от первых сущностей). Дальше что? Последовательно перегружать в целевую базу? Но с таким успехом я могу не использовать еще один промежуточный, а просто последовательно грузить из Staging Area в целевую.

Ну самый главный профит, что данные доступны и консистентны даже во время загрузки.

Измерения все равно будут грузиться раньше фактов, как ты не крути. Как может помочь транзакция я не понимаю, если честно.

А грузить всё в транзакции это большой риск. Грузить несколько часов, чтобы потом откатить все из-за последней записи в посдедней таблице. Ну не знаю...

Довольно распространенная практика вместо физических таблиц фактов иметь вьюхи с джойнами по бизнес-ключам. Но тут нужно смотреть на сценарии использования этих фактов.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713414
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrus,

как я писал, транзакция нужно только потому, что при любой ошибке в любом из блоков нужно откатить все, что было залито до ошибки. Только по этой причине используется транзакция. Если есть альтернативные варианты, то подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713415
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodovtarrus,

Ну хорошо, перегружу я их в промежуточные (опять же, последовательно одну за другой, несмотря на то, что многие друг от друга не зависят, но зависят от первых сущностей). Дальше что? Последовательно перегружать в целевую базу? Но с таким успехом я могу не использовать еще один промежуточный, а просто последовательно грузить из Staging Area в целевую.

Последний шаг с switch/merge обычно в десятки или сотни раз короче. Если это только свитчи, то вообще несколько милисекунд. Поэтому мгновенно или почти мгновенно получается новая версия данных. Очень удобно на мой взгляд.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713417
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodovtarrus,

как я писал, транзакция нужно только потому, что при любой ошибке в любом из блоков нужно откатить все, что было залито до ошибки. Только по этой причине используется транзакция. Если есть альтернативные варианты, то подскажите, пожалуйста.

Так смысл транзакции в полном откате, а не до ошибки. Как транзакция определит, что вот эта часть хорошая, а вот эта плохая? Тем более при параллельной загрузку понятие "до ошибки" тоже не ясно.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713419
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarrusAlexey Zarodovtarrus,

как я писал, транзакция нужно только потому, что при любой ошибке в любом из блоков нужно откатить все, что было залито до ошибки. Только по этой причине используется транзакция. Если есть альтернативные варианты, то подскажите, пожалуйста.

Так смысл транзакции в полном откате, а не до ошибки. Как транзакция определит, что вот эта часть хорошая, а вот эта плохая? Тем более при параллельной загрузку понятие "до ошибки" тоже не ясно.

Сорри, не верно прочитал ваше сообщение.

Промежуточные таблицы имитируют транзакцию, но оставляют вам шанс на "дозагрузку"
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713422
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrus,

в общем и целом, я понял смысл, но у меня остается один вопрос. Как быть с суррогатными ключами, которые генерятся автоматически (identity). Если я воспользуюсь промежуточными таблицами, залью в них, то как перенести данные в целевую с сохранением суррогатных ключей? Иначе мне снова придется привязывать таблицы измерений, чтобы получить вновь созданные ключи.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713425
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodovtarrus,

в общем и целом, я понял смысл, но у меня остается один вопрос. Как быть с суррогатными ключами, которые генерятся автоматически (identity). Если я воспользуюсь промежуточными таблицами, залью в них, то как перенести данные в целевую с сохранением суррогатных ключей? Иначе мне снова придется привязывать таблицы измерений, чтобы получить вновь созданные ключи.

Не добавляйте свойство identity в целевых таблицах. Просто и всё при мердже. Если будете переключать партиции, то там вообще это не важно.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713428
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrus,

но таким образом придется генерить его уже своими силами, правильно я понимаю?
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713437
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodovtarrus,

но таким образом придется генерить его уже своими силами, правильно я понимаю?

А полностью все таблицы заливаете или инкрементно?
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713459
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodov,

на картинке у Вас не параллельный пакет. В параллельном потоки между источником и получателем независимы.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713467
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Вы это сделайте лучше отдельными пакетами,а макропоследовательность выполнения определяйте шагами джоба.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713511
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrus,

инкрементно.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713513
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

речь была о Control Flow Parallelism.

https://www.dynamics101.com/ssis-parallel-processing/
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713518
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ZarodovВладислав Колосов,

речь была о Control Flow Parallelism.

https://www.dynamics101.com/ssis-parallel-processing/

Все верно. Один пакет - одна целевая таблица. В мастер пакете определяется воркфлоу. Пакеты - монстры, когда всё в одном очень неудобно обслуживать.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713519
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrus,

в Staging Area попадают измененные данные за день из источников. Далее эти данные перезаливаются в хранилище.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713521
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodovtarrus,

инкрементно.

Можно генерировать ключи в промежуточной таблице и при мердже по бизнес-ключу их же и переносить. Только после truncate промежуточной таблицы первое значение для identity нужно перенастраивать на большее чем уже есть в основной таблице.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713524
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrus,

т.е. я могу сделать на каждую целевую таблицу отдельный пакет и отдельную промежуточную таблицу. Плюс пакет Merge/Switch (его можно в транзакции на случай ошибок).
Далее в мастер пакете уже выполняю всех их?
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713525
Alexey Zarodov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrus,

интересный совет, спасибо, обмозгую на выходных.
...
Рейтинг: 0 / 0
Параллельное выполнение SSIS пакета
    #39713530
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zarodovtarrus,

т.е. я могу сделать на каждую целевую таблицу отдельный пакет и отдельную промежуточную таблицу. Плюс пакет Merge/Switch (его можно в транзакции на случай ошибок).
Далее в мастер пакете уже выполняю всех их?

Да, в общих чертах всё верно. Дальше шаги вправо и влево в зависимости от потребностей бизнеса.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параллельное выполнение SSIS пакета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]