我需要创建一个能够合并客户端生产数据库的工具。 通常这些数据库将具有相同的模式(稍后我将进行一些检查,但现在我们假设它是)。过滤重复数据也是稍后的事情。 这需要自动完成(因此不需要通过SSMS生成脚本等)。 我已经不得不重新开始几次了,因为每次我遇到问题时我都没有想到,所以这次我想在你重新开始之前向你们征求意见。
我目前的行动计划是:
以正确的顺序循环每个表
转到下一个表格
测试时一切正常(禁用SSMS中的身份属性,创建T-SQL脚本以使用给定的种子更新每一行,...) 但现在问题是在C#中自动执行此操作,更具体地说是禁用身份属性。似乎没有一个干净的解决方案。创建一个新表并重建每个约束等似乎是错误的方式,因为我需要它的唯一原因是级联每个FK所以一切仍然指向正确的位置..
另一种方法是延迟身份列数据的更新,并在脚本生成之后和插入新数据库之前更改它。但后来我需要知道哪些数据指向哪些其他数据,而一切仍然是字符串(insertscript)?
有关如何处理此事的任何建议,想法或技巧?
我知道Red Gate的SQL比较,它确实很精彩,但需要自己编程。
使用:SMO,SQL Server 2005 - 2008R2(客户端服务器上没有开发人员或企业版),ADO.NET,C#,.NET framework 2.0,Visual Studio 2008
答案 0 :(得分:1)
我不确定您在此处使用您的流程完成了什么,但管理数据库版本是我非常感兴趣的事项。
看看DBSourceTools(http://dbsourcetools.codeplex.com)
它是一个将整个数据库编写到磁盘的实用程序,包括所有外键约束和数据
使用部署目标,您将能够在另一个数据库服务器(通常是本地计算机)上重新创建这些数据库
该工具将使用Sql批量插入处理依赖项和大型数据库表 - 尝试生成包含50,000个插入语句的脚本将是一场噩梦。
玩得开心。
免责声明:我参与了http://dbsourcetools.codeplex.com项目。