SQL Server 2012: не удается импортировать данные из MS Access из-за ограничения FOREIGN KEY.

Я использую мастер импорта для импорта данных из базы данных Access 2010 в таблицы SQL Server.

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

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

Когда я пытаюсь импортировать все данные из tblMembers в SQL Server, я получаю сообщение об ошибке:

Таблица tblMembers не может быть усечена, так как на нее ссылаются ограничения внешнего ключа

(переведено с немецкого, поэтому описание ошибки может немного отличаться)

Я попытался перечислить все имена таблиц, где MiID используется как FK, а также все имена ограничений, но я не могу понять, что вызвало проблему, кроме того факта, что в таблицах сервера уже есть тестовые данные, но, поставив галочку «удалить строки в целевой таблице» (в мастере). Я думаю, что перед вставкой новых данных существующие удаляются, и любое несоответствующее отношение PK/FK должно исчезнуть.

Итак, как я могу решить проблему неудачного импорта?

Что еще может вызвать сбой?

Спасибо за любую помощь Майкл


person mak    schedule 18.07.2017    source источник
comment
Нет версии SQL Server 2012 R2 — только 2012 — исправлено   -  person marc_s    schedule 18.07.2017


Ответы (1)


У вас есть три варианта:

  1. Отбросьте ограничения внешнего ключа в таблицах SQL Server. Эти, кажется, не нужны.
  2. Удалите строки с оскорбительными записями.
  3. Добавьте дополнительных участников для участников, которых не существует.

Третьим будет что-то вроде:

select t.memberid, m.col1, m.col2, . . .
from ((select t1.memberid from t1 union
       select t2.memberid from t2
      )
     ) t left join
     members m
     on t.memberid = m.memberid;
person Gordon Linoff    schedule 18.07.2017
comment
Спасибо, я решил это. Это была комбинация вещей, которые я должен был сделать. Отбросьте ограничения внешнего ключа для некоторых таблиц и повторно задайте идентификаторы определенных таблиц, в которых произошел сбой импорта. Кстати, я не знал, что в мастере Zieltabelle löschen означает TRUNCATE TABLE, а не DELETE FROM, так как truncate table вызывает ошибки, когда у вас есть ограничение внешнего ключа! Спасибо Майкл - person mak; 18.07.2017