在c#中从数据库生成脚本

时间:2011-05-17 18:46:02

标签: c# sql-server sql-server-ce

我正在开发一个C#应用程序,我想要一个显示数据库中所有现有表的窗口,用户可以选择要在sql compact中的新数据库中重新创建的表,某些表必须包含初始信息而另一个只是表格的结构。

有没有帮助重新创建此表?

我想生成现有表(* .sql)的脚本并从文件创建表到新数据库,但我不知道如何进行查询以生成sql表。

PS:现有的表在sqlserver中,我想在sqlcompact中创建一个表。

5 个答案:

答案 0 :(得分:0)

您可以使用SMO执行此操作。

SQL Server Management Objects

这里有一个简单的例子:

http://www.sqlservercentral.com/articles/SMO/scriptdatabaseobjectswithsmo/2342/

答案 1 :(得分:0)

我不知道differences between Sql Server and Sql Server CE但您可以使用Sql Server Management Studio为表格,程序等生成脚本。右键单击数据库,然后单击任务>生成脚本。

据我所知,大多数不支持的功能是查询,程序,视图......

答案 2 :(得分:0)

如果您使用NHibernate进行数据访问,他们有一个很好的SchemaExport工具,可以用于NHibernate支持的所有数据库(不仅仅是SQL Server)。因此,您的解决方案是列出所有映射实体,让用户选择他想要的实体,使用选定实体创建新配置,并使用SchemaExport以您想要的方言生成SQL。

答案 3 :(得分:0)

您可以使用我的脚本API /库以正确的SQL Server Compact方言生成CREATE TABLE脚本。 SMO无法为您做到这一点,它针对各种SQL Server版本。 http://exportsqlce.codeplex.com

答案 4 :(得分:0)

查看以下视图:

Information_Schema.TABLES
Information_Schema.COLUMNS
Information_Schema.REFERENTIAL_CONSTRAINTS
Information_Schema.TABLE_CONSTRAINTS 
Information_Schema.KEY_COLUMN_USAGE

我没有代码可以处理(抱歉),但我之前使用过这些代码来根据纯TSQL中的数据库自己的元数据重新创建表定义,并且没有理由在C#中无法完成申请也一样。将它们连接在一起,为最终定义声明一个字符串,并在结果集中光标以获取表中的所有字段,从而构建输出。完成后,将其返回给客户端。出于测试目的,比较代码的输出与SSMS在要求脚本创建表时产生的结果,并希望您能够相对快速地重新创建表定义。