2010-01-12 94 views
6

我想要所有DB DDL代码在CVS下。版本控制SQL Server DDL代码

我们对我们的.NET代码使用Subversion,但所有的数据库代码仍然未版本化。

我们所知道的是数据库逻辑的重要性。我使用Google搜索,但我发现只有少数(昂贵的工具)。我相信还有其他(更便宜的)解决方案。

您建议遵循什么方法?哪些工具最适合?

SQL Server 2005中,VS 2008 TS,TSVN

UPDATE 我们的编码的情况是,开发者不能直接访问到PROD DB。它只改变脚本(所以这不是一个问题)

我最感兴趣的DEV环境中的所有开发人员都有完全访问权限。
所以它发生了一个开发人员覆盖USP以前由另一个改变。
我想必须要恢复失传/比较卖点修订等的可能性

UPDATE-2
创建部署脚本中,我们使用的是红门SQL比较。
完美地工作 - 因此部署脚本不是这种情况。

回答

3

如果您还没有阅读过,Martin Fowler的文章Evolutionary Database Design是一个很好的开始。

这篇文章很难总结,但它描述了他的团队在快速变化的开发过程中如何处理数据库版本控制。他们创建了自己的工具来促进一些事情:将用户引导至当前主人的脚本,复制任何版本的架构,以便用户可以调试彼此的工作副本等。

对于坚实的低技术解决方案,我发现将两种DDL脚本保存在源代码管理中很有帮助:

  • 可从头开始创建数据库对象的主版本。
  • 每个开发迭代的“版本升级”脚本。

它们在一定程度上是多余的,但非常有用(特别是在涉及到部署时)。

+0

+1这篇文章是必读的。 – 2010-09-28 14:40:04

1

如果您使用的是Visual Studio Team Suite或Visual Studio Developer Edition,那么您有权获得Visual Studio Database Professional的副本。这是为了完成你所描述的内容而设计的,等等。我们用它来管理我们的数据库模式(代码)。

兰迪

2

如果你还没有看过Visual Studio数据库版GDR(a.k.a.“数据多德”),你一定要下载它,并尝试一下:

http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&displaylang=en

除其他事项外,GDR会很容易使每个开发人员保持一个属于自己的本地副本促进团队发展数据库,版本脚本,创建部署脚本以将数据库模式移动到新版本,甚至支持数据库回滚。

如果您使用团队系统开发者版本,它是免费的。一探究竟。

1

我们对所有的数据库代码也使用Subversion。由于没有任何东西被允许进入Prod,除非它在脚本中,所以似乎没有让人们将所有脚本放入颠覆的问题。我们倾向于编写alter table脚本来改变现有数据的表格,然后重新创建整个表格结构以防万一我们需要从头开始创建一个新的数据库(我们通常在多个服务器上拥有相同的数据库结构,因为我们的一些客户端非常大并且不希望他们的数据意外地被竞争者使用,因此支付单独的服务器,因此可能需要再次创建整个数据库而没有数据。)对于不直接存储数据的对象,我们放弃原始对象并用创建声明。每个项目都有自己的存储库,并且每个数据库也都有,因此脚本可能位于多个位置以便于部署。

但真正的关键是没有人可以加载到Prod没有脚本。我们不给予我们的开发者直接权利,所以他们在脚本中做事情没有问题,而不是使用SSMS。

+0

+1我们正在遵循一个非常类似的程序 – 2010-09-28 14:40:58

0

看看Wizardby是否符合您的需求。

1

我写了SMOscript它为数据库中的每个对象生成一个CREATE脚本。

使用此工具生成CVS覆盖的目录,并更新您的存储库。

1

您应该使用Management Studio(SSMS)并将.sql放置在源代码管理下,可能将单个模式对象置于文件夹下。 希望这可以帮助

+1

我试过了。但是在小团队中这花费了太多时间。所以我们决定自动化 – Maciej 2010-09-29 07:27:32