我正在尝试为数据库中的所有数据生成一个脚本,这样我就可以将数据移动到另一台服务器上的相同数据库中。在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, List
1 sortedList,HashSet1 visited, HashSet
1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List
1 sortedList,HashSet1 visited, HashSet
1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List
1 sortedList,HashSet1 visited, HashSet
1 current) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List
1 sortedList,HashSet 1 current) at,Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List
1 2 idDictionary, DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ExecuteQueryUsingTempTable(List
1 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(IEnumerable
1 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 )
发布于 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实例,并且我能够正确地生成脚本!!
请注意,我只执行了数据操作,并且我必须允许它为所有数据库对象编写脚本。我试图只选择某些表,但这给出了一些我不愿意跟踪的其他错误,所以我只做了整个操作。
发布于 2014-11-14 15:29:28
对我来说,其中一个可行的解决方案是将脚本生成为“模式和数据”,而不是“仅数据”。然后,我可以删除所有不必要的模式内容,只留下数据。希望这也能有所帮助。
发布于 2014-11-13 23:00:12
我也有同样的问题,并且没有安装SSMS2008 R2来做马特建议的事情。因此,我所做的是更改高级设置,使其创建模式和数据,并将其设置为检查对象是否已经存在。我将大多数其他内容设置为false (即主键、唯一键等),以便sql文件中的所有内容都是基本的create table语句和insert语句。因为它会在创建表之前检查表是否还不存在,所以如果表已经存在,则可以运行脚本。因此,它的行为就像只使用insert语句一样。如果要为多个选定的表创建单个sql文件,则会将所有表创建块放在脚本的顶部,因此,如果需要,可以在创建文件后轻松地删除所有这些块。
https://stackoverflow.com/questions/15647495
复制相似问题