Обход циклических ошибок внешнего ключа при попытке создания сценариев вставки данных в SQL 2008

Я пытаюсь создать некоторые скрипты вставки с помощью мастера SQL Server 2008 Script. После генерации скриптов я получаю следующую ошибку:

"Выбранная база данных содержит внешние ключи, которые создают цикл. Только данные публикации не поддерживаются для баз данных с циклическими отношениями внешних ключей.

Я попытался отключить и удалить все ограничения в базе данных. Ошибка все еще происходит. Есть ли способ обойти это? Возможно, SQL игнорирует ограничения при создании сценариев.

Ответ 1

На странице мастера, где вы выбираете переключатель, чтобы выбрать "Все объекты базы данных или конкретные объекты", обязательно выберите "Все объекты базы данных". По какой-то причине инструмент нуждается в чем-то там, чтобы генерировать, даже если вам просто нужна вставка таблицы script.

Как только я изменил этот переключатель на "Все объекты базы данных" и выбрал опцию "Дополнительно" для генерации "Тип" script= Только данные, он проработал весь путь.

Ответ 2

У меня была та же проблема, что и у OP. Затем я снова попробовал, на этот раз в расширенных параметрах, для опции "типы данных до script" я выбрал "схему и данные", а не только данные. Затем он работал у меня, не жалуясь на циклические ключи.

Ответ 4

Сохранение файла в зависимости от нового окна редактора запросов, похоже, заставляет меня работать на Management Studio 2008:\

Ответ 5

Во-первых, ответ IMHO HLGEM немного кавалерист - порой есть веские причины иметь циклические ссылки.

Я сказал, что генератор script является гиперчувствительным. Кажется, что любая пара PK/FK "циклична", и мне пришлось использовать копию моей базы данных, из которой я бы разделил все ключи, чтобы получить экспорт, чтобы выйти за пределы "циклической" ошибки. A script, как показано ниже, может помочь вам сбросить ключи по всему миру, но, конечно, будьте осторожны!

SELECT 'ALTER TABLE' + object_name (parent_obj) + 'DROP CONSTRAINT' + [name] AS Script из sysobjects, где xtype IN ('F')

[Я этого не писал. См. Http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=46682]

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

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

Ответ 6

Вы можете экспортировать данные, установив опцию script - "Script Проверить ограничения" на False

Извините, это не сработает: (

Вам нужно будет определить, какая таблица вызывает проблему.

Ответ 7

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

PD: Может быть, немного поздно, но поиск CyclicalForeignKeyException становится первым в Google.