Sql server 从ADO.NET生成SQL Server表架构的代码
我很想使用ADO.NET生成一个CREATETABLE脚本来创建给定表的精确副本 原因是持久性测试。我想知道我的应用程序是否会保留到特定的数据库。我希望能够将应用程序指向有问题的数据库和表,然后应用程序将生成一个新的数据库,其中包含指定表的精确副本。因此,可以对克隆的表进行持久性测试,而无需接触原始数据库,完成测试后,可以简单地删除新数据库 在我开始这个雄心勃勃的项目之前,我想知道是否已经存在任何东西。我尝试过Google,但我能找到的只是通过SSMS UI而不是通过代码获取模式生成SQL的方法。您可以使用(SMO)来实现这一点 示例(C#) 您可以使用(SMO)进行此操作 示例(C#)Sql server 从ADO.NET生成SQL Server表架构的代码,sql-server,ado.net,database-schema,dml,Sql Server,Ado.net,Database Schema,Dml,我很想使用ADO.NET生成一个CREATETABLE脚本来创建给定表的精确副本 原因是持久性测试。我想知道我的应用程序是否会保留到特定的数据库。我希望能够将应用程序指向有问题的数据库和表,然后应用程序将生成一个新的数据库,其中包含指定表的精确副本。因此,可以对克隆的表进行持久性测试,而无需接触原始数据库,完成测试后,可以简单地删除新数据库 在我开始这个雄心勃勃的项目之前,我想知道是否已经存在任何东西。我尝试过Google,但我能找到的只是通过SSMS UI而不是通过代码获取模式生成SQL的方法
这太棒了。你为我节省了一大堆时间。非常感谢。史诗。我需要的是动态创建这些东西,这将节省我大量的时间。非常感谢你!这太棒了。你为我节省了一大堆时间。非常感谢。史诗。我需要的是动态创建这些东西,这将节省我大量的时间。非常感谢你!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Management.Smo;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Server srv = new Server(@".\SQLEXPRESS");
Database db = srv.Databases["MyDB"];
Scripter scrp = new Scripter(srv);
scrp.Options.ScriptDrops = false;
scrp.Options.WithDependencies = true;
//Iterate through the tables in database and script each one. Display the script.
//Note that the StringCollection type needs the System.Collections.Specialized namespace to be included.
Microsoft.SqlServer.Management.Sdk.Sfc.Urn[] smoObjects = new Microsoft.SqlServer.Management.Sdk.Sfc.Urn[1];
foreach (Table tb in db.Tables)
{
smoObjects[0] = tb.Urn;
if (tb.IsSystemObject == false)
{
System.Collections.Specialized.StringCollection sc;
sc = scrp.Script(smoObjects);
foreach (string st in sc)
Console.WriteLine(st);
}
}
Console.ReadKey();
}
}
}