首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >生成脚本-仅数据-发现循环依赖项错误

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

Stack Overflow用户
提问于 2013-03-27 05:10:57
回答 3查看 10.9K关注 0票数 26

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

任务>生成脚本>为整个数据库和所有数据库对象编写脚本>高级>要编写脚本的数据类型:仅数据

这给了我一个关于循环依赖的错误。如果我将数据类型改为脚本、模式和数据,它会正常生成。我如何解决这个问题,使其只与数据一起工作?

从MyDatabase获取对象列表的

操作结果失败

详细报告:

Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException:编写对象脚本时出错。->找到Microsoft.SqlServer.Management.Smo.SmoException:循环依赖项。at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List1 sortedList,HashSet1 visited, HashSet1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List1 sortedList,HashSet1 visited, HashSet1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List1 sortedList,HashSet1 visited, HashSet1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List1 sortedList,HashSet 1 current) at,Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List1 2 idDictionary, DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ExecuteQueryUsingTempTable(List1 objectList,List1 list, String query) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveTableOnlyDependencies() at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveDependencies() at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.Order(IEnumerable1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.Script(Urn[] urns,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写入器) at Microsoft.SqlServer.Management.Smo.ScriptMaker.Script(Urn[] urns,ISmoScriptWriter写入器) at Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.DoScript(ScriptOutputOptions 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)-内部异常堆栈跟踪的结束-在Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object发送器,参数e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object DoWorkEventArgs )

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-25 10:59:14

我也犯了同样的错误...在这里看我的答案:http://mattslay.com/ssms-generate-scripts-data-only-cyclic-dependencies-found-error/

然后,心血来潮,知道我以前已经成功地编写了这个数据库的脚本,我使用Sql Server Management 2008 R2连接到Sql Server 2012实例,并且我能够正确地生成脚本!!

请注意,我只执行了数据操作,并且我必须允许它为所有数据库对象编写脚本。我试图只选择某些表,但这给出了一些我不愿意跟踪的其他错误,所以我只做了整个操作。

票数 9
EN

Stack Overflow用户

发布于 2014-11-14 15:29:28

对我来说,其中一个可行的解决方案是将脚本生成为“模式和数据”,而不是“仅数据”。然后,我可以删除所有不必要的模式内容,只留下数据。希望这也能有所帮助。

票数 37
EN

Stack Overflow用户

发布于 2014-11-13 23:00:12

我也有同样的问题,并且没有安装SSMS2008 R2来做马特建议的事情。因此,我所做的是更改高级设置,使其创建模式和数据,并将其设置为检查对象是否已经存在。我将大多数其他内容设置为false (即主键、唯一键等),以便sql文件中的所有内容都是基本的create table语句和insert语句。因为它会在创建表之前检查表是否还不存在,所以如果表已经存在,则可以运行脚本。因此,它的行为就像只使用insert语句一样。如果要为多个选定的表创建单个sql文件,则会将所有表创建块放在脚本的顶部,因此,如果需要,可以在创建文件后轻松地删除所有这些块。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15647495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档