-->

使用SMO获得SQL Server的数据(Get Sql server's data usi

2019-07-03 14:10发布

我使用SQL Server的Smo创建数据库的C#应用​​程序的方案。 不过,我需要多一点,我还需要从每个表中的数据像下面的脚本

--........................................
INSERT INTO Table123 (...) VALUES (....)
INSERT INTO Table456 (...) VALUES (....)
--........................................

我怎样才能做到这一点,这可能吗? 须知请我需要使用SMO创建完全是一个脚本,而不是*数据库名.bak,等

Answer 1:

看看SMO的脚本编写者类。 以下基本示例对我的作品:

using System.Data.SqlClient;
using System.IO;
using System.Text;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

namespace SqlExporter
{
class Program
{
static void Main(string[] args)
{
    var server = new Server(new ServerConnection {ConnectionString = new SqlConnectionStringBuilder {DataSource = @"LOCALHOST\SQLEXPRESS", IntegratedSecurity = true}.ToString()});
    server.ConnectionContext.Connect();
    var database = server.Databases["MyDatabase"];
    var output = new StringBuilder();

    foreach (Table table in database.Tables)
    {
        var scripter = new Scripter(server) {Options = {ScriptData = true}};
        var script = scripter.EnumScript(new SqlSmoObject[] {table});
        foreach (var line in script)
            output.AppendLine(line);
    }
    File.WriteAllText(@"D:\MyDatabase.sql", output.ToString());
}
}
}

注意:这个例子不处理表间的任何外键约束或其他依赖。

参考文献:

  1. 这太问题 (即把我到的编剧类)
  2. 这个MSDN论坛的问题 (解释了如何使用EnumScript法)


文章来源: Get Sql server's data using smo