Назад | Перейти на главную страницу

Как я могу импортировать данные с помощью SQL Server SSIS при использовании ограничений внешнего ключа?

Я пытаюсь настроить динамическую базу данных формы импорта в нашу базу данных разработки.

Я пытаюсь сделать это с помощью SSIS, но импорт не выполняется из-за ограничений.

Например. У меня есть следующие таблицы:

Импорт клиентов и продуктов - это нормально, потому что они ни от чего не зависят. Но при импорте OrderLines происходит сбой, потому что заказ еще не создан.

Как изменить порядок импорта таблиц службами SSIS?

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

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

--drop
alter table t1  DROP CONSTRAINT fk_1
--add
alter table t1 WITH CHECK add constraint fk_1 foreign key (fk)
references t2 (i)

отключить / включить

--disable
alter table t1 NOCHECK CONSTRAINT fk_1
--enable
alter table t1 WITH CHECK CHECK CONSTRAINT fk_1 

WITH CHECK важен, иначе SQL Server не будет проверять данные и не доверять им.

  1. Импортируйте в следующем порядке

    1. Клиенты
    2. Товары
    3. Заказы
    4. OrderLines

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

Вы также можете последовать идее @Nick Kavadias, но это может привести к аннулированию бизнес-правил (хотя это может быть обнаружено при повторном включении ограничений) с потерянными записями.