【发布时间】:2012-11-05 14:19:51
【问题描述】:
我正在使用 Sql Server Smo 通过 C# 应用程序创建数据库方案。但是,我需要更多,我还需要从每个表中获取数据作为 脚本,如下所示:
--........................................
INSERT INTO Table123 (...) VALUES (....)
INSERT INTO Table456 (...) VALUES (....)
--........................................
我该怎么做?有可能吗?请注意,我需要使用 smo 而不是 *.bak 数据库等来创建一个脚本。
【问题讨论】:
-
为什么不在
smo状态下使用实体框架代码优先方法?它也创建数据库模式。您还可以手动生成用于插入/更新/删除的 sql 脚本。检查this link -
据我所知,SQL Server 无法以
INSERT脚本的形式转储其数据。您可以使用 BCP 来生产,例如csv 文件和格式文件,但它不符合您要求的格式。 -
如果您正在构建架构,为什么不能将该脚本构建为文本。
-
好吧,可以结合 SMO 来枚举表/列/任何东西来获取 DDL,并使用经典查询来构建字符串脚本,因为 Smo.Scripter 不会创建 DML。
-
事实证明,如果您使用 ScriptData = true 选项和 Scripter.EnumScript 方法,Smo.Scripter 将生成 DML。至少它对我有用(请参阅我的回答中的示例)。
标签: c# .net sql-server smo