Звучит так, как будто у вас возникают проблемы с тайм-аутом, поскольку при первом запуске пакета служб SSIS таблица блокируется, а все остальные запущенные копии пакета ожидают снятия блокировки.
Есть несколько вещей, которые вы можете сделать, чтобы подтвердить это. Сначала в SQL Server Management Studio (SSMS) откройте окно запроса и при возникновении ситуации выполните команду EXEC sp_who2
. Вы увидите столбец BlkBy в результатах. Столбец содержит значение SPID, которое блокирует выбранный процесс. Вы, вероятно, увидите, что один экземпляр вашего пакета блокирует все остальные пакеты.
В конструкторе служб SSIS в задаче «Поток данных» измените компонент «Назначение». Есть флажок блокировки таблицы. Вероятно, установлен флажок, который сообщает процессу о блокировке таблицы до завершения загрузки данных.
У вас есть несколько вариантов решения этой проблемы. Во-первых, важно ли, чтобы один пакет служб SSIS завершил загрузку данных, прежде чем можно было запустить другой? Если ответ «Нет», то вы можете снять флажок «Блокировка таблицы» в компоненте «Назначение». Это позволит SQL Server управлять одновременной загрузкой данных.
Если вы должны позволить одному пакету завершиться до запуска других пакетов, то вы можете создать задачу служб SSIS, которая проверяет, доступна ли таблица для загрузки. Если таблица загружается, остановите пакет служб SSIS и повторите проверку позже. Вы даже можете справиться с этим в своем консольном приложении.
В SQL Server нет встроенных способов сделать это, и служба брокера звучит так, как будто это больше работы, чем вам нужно.