使用smo获取Sql server的数据

我正在使用Sql Server Smo通过C#应用程序创建数据库方案。 但是,我还需要更多,我还需要从每个表中获取数据,如下所示:

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

我怎么能这样做,是否可能? 请注意,我需要使用smo而不是数据库的* .bak等创建一个完整的脚本。

看看SMO的Scripter课程。 以下基本示例适用于我:

 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. 这个问题 (这使我转向Scripter类)
  2. 这个MSDN论坛问题 (解释了如何使用EnumScript方法)