生成脚本 - 仅限数据 - 发现循环依赖性错误

时间:2013-03-26 21:10:57

标签: ssis sql-server-2012

我正在尝试生成数据库中所有数据的脚本,因此我可以将数据移动到另一台服务器上的相同数据库。在SQL Server 2012中,我右键单击源数据库

任务>生成脚本>脚本整个数据库和所有数据库对象>高级>脚本数据类型:仅限数据

这给了我一个关于Cyclic依赖的错误。如果我将脚本的数据类型更改为架构和数据,则生成正常。如何解决此问题仅适用于数据?

  

操作结果获取列表   来自MyDatabase失败的对象

     

详细报告:

     

Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException:   编写对象脚本时发生错误。 --->   Microsoft.SqlServer.Management.Smo.SmoException:循环依赖项   找到。在   Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(的Int32   num,Dictionary 2 dictionary, List 1 sortedList,HashSet 1 visited, HashSet 1 current)at   Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(的Int32   num,Dictionary 2 dictionary, List 1 sortedList,HashSet 1 visited, HashSet 1 current)at   Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(的Int32   num,Dictionary 2 dictionary, List 1 sortedList,HashSet 1 visited, HashSet 1 current)at   Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(的Int32   num,Dictionary 2 dictionary, List 1 sortedList,HashSet 1 visited, HashSet 1 current)at   Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDictionary(词典2 dictionary) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(List 1   objectList,Dictionary 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   urns,ISmoS​​criptWriter writer)   Microsoft.SqlServer.Management.Smo.ScriptMaker.Script(Urn [] urns,   ISmoS​​criptWriter编写者)   Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.DoScript(ScriptOutputOptions   outputOptions)---内部异常堆栈跟踪结束--- at   Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(对象   发件人,DoWorkEventArgs e)at   System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)at   System.ComponentModel.BackgroundWorker.WorkerThreadStart(对象   参数)

3 个答案:

答案 0 :(得分:25)

对我有用的可能解决方案之一是生成脚本“Schema and data”而不是“Data only”。然后我可以删除所有不必要的模式,只留下数据。 希望这也有帮助。

答案 1 :(得分:8)

我有同样的错误...请在此处查看我的回答:http://mattslay.com/ssms-generate-scripts-data-only-cyclic-dependencies-found-error/

  

然后,一时兴起,知道我以前成功编写过这个数据库的脚本,我使用Sql Server Management 2008 R2连接到Sql Server 2012实例,并且我能够无错误地生成脚本!!

     

注意,我只做了数据,我不得不允许它编写所有数据库对象的脚本。我试图只选择某些表格,但这会产生一些我不愿意追踪的其他错误,所以我只做了整件事。

答案 2 :(得分:3)

我遇到了同样的问题,并没有安装SSMS 2008 R2来做Matt建议的事情。所以我所做的是更改高级设置以使其创建架构和数据,并将其设置为检查对象是否已存在。我将大多数其他内容设置为false(即主键,唯一键等),以便sql文件中的所有内容都是基本的create table语句和insert语句。由于它在创建表之前检查表是否已经存在,因此如果表已经存在,则可以运行该脚本。所以它的行为就像它只是插入语句一样。如果您为几个选定的表创建单个sql文件,它会将所有表创建块放在脚本的顶部,因此,如果需要,可以在创建文件后轻松删除所有这些。