我正在使用SMO' DependencyWalker
来浏览我的依赖项和脚本插入。
var insertScripter = new Scripter(server)
{
Options =
{
ScriptSchema = false,
ScriptData = true,
SchemaQualify = false
}
};
var tables = db.Tables.OfType<Table>()
.Where(tb => tb.IsSystemObject == false)
.Cast<SqlSmoObject>()
.ToArray();
var dependencyWalker = new DependencyWalker(server);
var dependencyTree = dependencyWalker.DiscoverDependencies(tables.ToArray(), DependencyType.Parents);
var dependencies = dependencyWalker.WalkDependencies(dependencyTree);
foreach (var dependency in dependencies)
{
foreach (var s in insertScripter.EnumScript(new[] { dependency.Urn}))
{
writer.WriteLine(s);
}
}
出于某种原因,我在运行脚本时仍然会遇到外键约束? 这怎么可能?
答案 0 :(得分:0)
尝试使用这种形式的方法DiscoverDependencies(UrnCollection, Boolean)
并将布尔值设置为$ false;它对我有用。
关于正确的参数,Rhumborl的评论是正确的。