我有两台服务器机器(一台用于开发,另一台用于客户机),安装了SQL Server 2008。每当开发人员对Development Server中的表/视图/存储过程进行更改时,它也需要反映客户端服务器。
目前,我手动处理所有更改,例如表中的新列,存储过程中的更改等。数据库脚本或复制可以为我自动完成整个过程吗?或者是否有一些更好的解决方案来保持数据库模式的一致性。
帮助将受到高度赞赏。
谢谢!
答案 0 :(得分:1)
我强烈建议创建一个所有架构更改都是通过SQL脚本完成的环境 - 永远不要在任何环境中“手动”。每个开发人员都必须将与他/她的bugfixed(或新功能)相关的脚本提交给版本控制系统。
通常你会有一个大脚本从头开始创建数据库,每个版本升级一个(从1.0到1.1,一个从1.1到1.2,依此类推)
如果你有人力,那么为每个版本维护一个“从头开始”的脚本也非常方便。是否需要,取决于在空系统上安装的频率。
我们在使用Liquibase维持这一切方面拥有非常好的经验。它会自动跟踪哪些补丁已应用于数据库以及哪些补丁需要在升级期间运行。它还会阻止您运行两次相同的迁移。
答案 1 :(得分:0)
所有数据库应用程序都存在的问题,并且难以解决。这样的解决方案无法安排,因为开发人员所做的更改需要先进行测试,而且您当然不希望未经测试的代码与您的实时数据库合并。这个问题对我很感兴趣,因为我目前正在编写一个通用的解决方案来一劳永逸地解决这个问题。
但与此同时,我们正在使用名为Open DBDiff的开源产品(谷歌它 - 你不能错过它),这可以做一些抛光,但效果还不错。您将源数据库和目标数据库传递给它,并生成一个脚本以使目标与源相同。复制程序集和用户角色似乎有些麻烦,但对于一切,我没有遇到任何麻烦。
答案 2 :(得分:0)
我确信在确保更改已经过测试并正确检查到源代码管理中后,人员应该进行部署。这不是完全自动化的东西。
人类应该使用这些工具。我使用Visual Studio 2010 Professional,它具有强大的模式比较工具,生成并执行部署脚本并具有源代码控制集成。