Блокировка таблицы в сервере sql - PullRequest
1 голос
/ 04 июля 2019

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

Мой вопрос, если я установил блокировку для этой таблицы, и 2 процесса / пакета пытаются вставить в таблицу одновременно, что получит 1-й приоритет, и если таблица 1 получит приоритет 1-й, тогда я получу сообщение об ошибкедля таблицы 2, или она будет ждать, пока таблица 1 не снимет блокировку.

Внедрение блокировки для таблицы будет влиять на производительность (Мой первоначальный мыслительный процесс, я готов его оспорить).

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

Спасибо

1 Ответ

0 голосов
/ 04 июля 2019

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

  • Изменить TransactionOption для всех 20+ задач (при условии, что вы используете 20+ «Выполнить задачу пакета» в одном пакете для запуска других 20+ пакетов).) от «Поддерживается» до «Требуется»;

  • Вместо параллельного запуска всех задач, расположите их в последовательности.Я бы посоветовал запустить их последовательно любым способом, чтобы определить истинную причину дубликата.

Редактировать: - Если бы вы были вами, я постараюсь загрузить все 20+ пакетов в 20+ разделенных промежуточных таблиц, а когда все пакеты будут закончены, затем загрузить все промежуточные таблицы вВаша таблица назначения в последовательности, и теперь должно быть очень легко проверить дублирование, так как все промежуточные таблицы являются локальными.

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