具有where条件的SQL Server SMO脚本数据

时间:2018-06-29 14:53:16

标签: c# sql sql-server tsql smo

我能够使用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子句的条件)的脚本数据?

0 个答案:

没有答案