我解决了如下问题。我创建了一个自定义winform应用程序以导出其数据:
- 使用SMO(传输类)将整个模式编写为.sql文件
- 使用以下命令遍历所有指定的表(实际上我只是列出了要忽略的大增长表,然后处理其他所有表):select * from
- 将记录捕获到DataTable对象中,并将其转储到.xml文件中
- 压缩整个文件夹,然后将其发送回给我
我有一个自定义的winform应用程序,可在开发系统上本地使用该应用程序导入数据:
- 创建一个空数据库
- 运行.sql文件以构建架构
- 禁用所有表上的所有约束(使用sp_foreachtable)
- 遍历所有.xml文件并使用SqlBulkCopy对象批量导入
- 重新启用所有约束(使用sp_foreachtable)
这种方法适用于我的数据库,但是对于某些数据库设计,我不一定会建议这样做。在我的情况下,有许多“小型”配置表,只有少数几个“大型”表之间的关系最小,因此我可以轻松地忽略大型表。如果存在更复杂的关系,那可能不是一个好的解决方案。
到目前为止似乎工作得很好。我希望找到一种无需编写自定义代码的好方法,但是我只用了几个小时的开发时间就可以使用它。
仅供参考,我几乎可以在sqlpubwiz中使用它,但是脚本编写脚本的选项是全部或全部……您不能忽略特定的表……这对我的应用程序来说是一个大问题。SMO中的Transfer对象是一个非常有用的类-
它只需要几行代码就可以编写整个数据库模式的脚本,包括按照正确的创建顺序创建的所有依赖关系,以便从头开始重新创建数据库!
http://msdn.microsoft.com/zh-
CN/library/microsoft.sqlserver.management.smo.transfer.aspx



