1

我正在使用SQL Server和Visual Studio。我有一个通过CCNET自动构建。当我在SVN中提交代码时,自动构建会运行,并且所有的单元测试都会使用模拟/存根数据运行。在自动构建之前部署/运行数据库更改

现在唯一不自动运行的是运行数据库更改/脚本,我手动执行。任何人有提示如何可以autometed?

回答

2

很明显,您需要自动运行数据库更改脚本 - 您面临的挑战是如何决定如何运行。答案是,您需要将模式版本存储在数据库(或数据库元数据)中,并选择相应的脚本 - 无论是从头开始创建数据库还是应用适当的更改。

我的解决办法是把我的数据库架构的维护完全在代码中,我觉得这是书面记录我迄今所做的最好的版本:

How to create "embedded" SQL 2008 database file if it doesn't exist?

定的代码足够聪明做升级该架构可以在您的应用程序中或在其自己的控制台应用程序中联机,您应该能够将自动化架构更改集成到CI构建脚本中。

自从我写了上面这段代码以来,我一直在追求这一点 - 事实证明,我所做的与Ruby Migrations(我相信Subsonic中的一些类似的功能也不相似)除了我不' t目前有任何“向下”的能力来扭转模式变化(一个有趣的想法,我担心可能具有破坏性的代码“活着”)。有一个开源的.NET项目Migrator.net看起来很有用,但我不确定它的维护方式有多积极。


附录

自从我写了这个实体框架代码首先出现,他们已经开始为与迁移进展 - 这样会现在值得一看。不过,我认为它还没有那么完美,并且像我见过的其他几个选项并不简单。我需要将我的软件包打包并使之可用!

2

有很多方法可以解决这个问题。我已经在一些公司中使用了一种方法,我记录了here,基本上它是处理数据库更新自动化任务的源代码,以及一些关于如何和什么的解释。我还建议检查Data Dude(只是谷歌它),我没有使用它,但我的理解是,它可以用来自动化数据库更新(可能是错误的)。

我会说,我不建议使用数据库比较工具来生成脚本...没有格外小心。问题通常是你会比较你的开发数据库(你的变化在哪里)和生成框数据库,但是你的数据库可能包含(可能会)你为“正在进行的工作”所做的其他修改你可能正在工作的错误修复上。

无论如何,正如我所说,有很多方法可以做到这一点,调查一些选项,并选择最适合您和您团队风格的方法。

快乐自动化:-)