我能够使用SMO
在Microsoft SQL Server 2012中生成包含数据和架构的脚本。代码如下。
public string ScriptDatabase(BackgroundWorker bw)
{
var sb = new StringBuilder();
var server = new Server(@"SERVER\SQLEXPRESS");
var databse = server.Databases["DB"];
var scripter = new Scripter(server);
scripter.Options.ScriptData = true;
scripter.Options.AnsiPadding = true;
scripter.Options.ScriptDrops = false;
scripter.Options.WithDependencies = true;
scripter.Options.IncludeHeaders = true;
//And so on ....
int i = 1;
var smoObjects = new Urn[1];
foreach (Table t in databse.Tables)
{
//sb.Clear();
if (lst.Contains(t.Name))
{
smoObjects[0] = t.Urn;
if (t.IsSystemObject == false)
{
IEnumerable<string> sc = scripter.EnumScript(smoObjects);
foreach (var st in sc)
{
//bw.ReportProgress(i * 100 / databse.Tables.Count,st);
sb.Append(st + Environment.NewLine);
}
}
bw.ReportProgress(i * 100 / lst.Length);
i++;
}
}
//MessageBox.Show(sb.ToString());
return sb.ToString();
}
我只是想知道,如何为每个表生成一个带有条件(如sql中的where子句的条件)的脚本数据?