Массовая вставка служб SSIS одновременно в одну таблицу - PullRequest
4 голосов
/ 08 октября 2010

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

Может ли служба посредника SQL Server поставить в очередь данные вставки?Есть ли в SQL Server или SSIS какой-либо механизм для обработки одновременной надежной вставки?

Я использую задачу выполнения процесса служб SSIS для выполнения массовой вставки LINQ to SQL console application

Спасибо.

1 Ответ

2 голосов
/ 09 октября 2010

Звучит так, как будто у вас возникают проблемы с тайм-аутом, поскольку при первом запуске пакета служб SSIS таблица блокируется, а все остальные запущенные копии пакета ожидают снятия блокировки.

Есть несколько вещей, которые вы можете сделать, чтобы подтвердить это. Сначала в SQL Server Management Studio (SSMS) откройте окно запроса и при возникновении ситуации выполните команду EXEC sp_who2. Вы увидите столбец BlkBy в результатах. Столбец содержит значение SPID, которое блокирует выбранный процесс. Вы, вероятно, увидите, что один экземпляр вашего пакета блокирует все остальные пакеты.

В конструкторе служб SSIS в задаче «Поток данных» измените компонент «Назначение». Есть флажок блокировки таблицы. Вероятно, установлен флажок, который сообщает процессу о блокировке таблицы до завершения загрузки данных.

У вас есть несколько вариантов решения этой проблемы. Во-первых, важно ли, чтобы один пакет служб SSIS завершил загрузку данных, прежде чем можно было запустить другой? Если ответ «Нет», то вы можете снять флажок «Блокировка таблицы» в компоненте «Назначение». Это позволит SQL Server управлять одновременной загрузкой данных.

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

В SQL Server нет встроенных способов сделать это, и служба брокера звучит так, как будто это больше работы, чем вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...