Подтвердить что ты не робот

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

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

Задачи > Сгенерировать скрипты > script всю базу данных и все объекты базы данных > Дополнительно > Типы данных script: только данные

Это приводит к ошибке о циклической зависимости. Если я изменил тип данных на script на схему AND data​​strong > , он генерирует штраф. Как я могу исправить это только для работы с данными?

Результат действия Получение списка объектов из MyDatabase Failed

Подробный отчет:

Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException: Произошла ошибка при создании сценариев. --- > Microsoft.SqlServer.Management.Smo.SmoException: циклические зависимости найденный. в Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Словарь 2 dictionary, List 1 sortedList, HashSet 1 visited, HashSet 1 текущий) в Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Словарь 2 dictionary, List 1 sortedList, HashSet 1 visited, HashSet 1 текущий) в Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Словарь 2 dictionary, List 1 sortedList, HashSet 1 visited, HashSet 1 текущий) в Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num, Словарь 2 dictionary, List 1 sortedList, HashSet 1 visited, HashSet 1 текущий) в Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDictionary(Dictionary 2 dictionary) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(List 1 objectList, словарь 2 idDictionary, DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ExecuteQueryUsingTempTable(List 1 objectList, List 1 list, String query) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveTableOnlyDependencies() at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveDependencies() at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.Order(IEnumerable 1 урны) в Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable 1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List 1 урны, писатель ISmoScriptWriter) в Microsoft.SqlServer.Management.Smo.ScriptMaker.Script(Urn [] urns, ISmoScriptWriter) в Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.DoScript(ScriptOutputOptions outputOptions) --- Конец внутренней трассировки стека исключений --- at Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork (Объект отправителя, DoWorkEventArgs e) в System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) в System.ComponentModel.BackgroundWorker.WorkerThreadStart(Объект аргумент)

4b9b3361

Ответ 1

У меня была такая же точная ошибка... См. мой ответ здесь: http://mattslay.com/ssms-generate-scripts-data-only-cyclic-dependencies-found-error/

Затем, по прихоти, зная, что я успешно выполнил эту предварительную запись перед этой базой данных, я подключился к экземпляру Sql Server 2012 с использованием Sql Server Management 2008 R2, и я смог сгенерировать скрипты без ошибок.

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

Ответ 2

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

Ответ 3

У меня была такая же проблема, и у меня нет SSMS 2008 R2, чтобы сделать то, что предложил Мэтт. Так что я сделал, изменили расширенные настройки, чтобы создать схему и данные, а также установить, чтобы проверить, существуют ли объекты. Я установил большинство других вещей в false (например, первичные ключи, уникальные ключи и т.д.), Так что все, что в файле sql является базовым оператором create table, и вставлять утверждения. Поскольку он проверяет, не существует ли таблицы до создания таблицы, вы будете в порядке, чтобы запустить script, если таблица уже существует. Таким образом, он ведет себя так, как если бы это были только вставки. Если вы создаете один файл sql для нескольких выбранных таблиц, он помещает все блоки создания таблицы в начало script, поэтому достаточно легко удалить все из них после того, как файл будет создан, если вы хотите.