为什么数据库版本控制不像应用程序版本控制那么重要?

时间:2011-07-22 09:40:48

标签: sql-server-2005 version-control mercurial kiln

我最近开始在我的所有项目VB.NET代码中使用Kiln Source Control,我不知道如果没有它我是如何管理的!

我一直在为我的所有存储过程,UDF等寻找数据库源代码控制。但是,我发现数据库版本控制的可用性不如我的Web文件那么多。

为什么数据库版本控制不像我的网络文件那么重要?当然,我的数据库中的所有编程都与代码隐藏和.aspx文件中的代码一样重要吗?

7 个答案:

答案 0 :(得分:6)

控制数据库对象的版本很重要!

然而,也许它不被认为是重要的,因为有些人认为数据库只是作为一种帮助他们的工具?外部工具(通常)不受版本控制。

我发现难以管理的一件事是发布过程。现在我们正在使用连接到svn的红门源控制。在发布的时候,我们和其他代码一样:从一个分支合并到另一个分支。然后,为了部署它,我们使用sql compare在合并修订版和实际数据库之间创建diff脚本。除了一些小怪癖和初学者的错误,我认为这在没有停机(有目的;))并且具有高速开发过程(大量发布)的环境中运行良好。

答案 1 :(得分:1)

您可以在版本控制系统中维护数据库工件。 版本控制系统用于工件的版本控制,工件可以是程序代码或数据库。我们在代码和数据库中使用了相同的VC。

答案 2 :(得分:1)

我不知道是否或为什么它不被认为是重要的,但这里有一些可能有用的链接:

http://code.google.com/p/migratordotnet/

答案 3 :(得分:1)

VCS旨在存储文本版本。他们可以存储二进制文件,但效率较低。并且DB状态本身不是文本,甚至不能直接存储为二进制文件。您可以存储SQL代码。

一种解决方案是存储完整的数据库转储(SQL或二进制),另一种解决方案是存储将一种数据库状态更改为下一种数据库状态的SQL脚本序列。第二种方法可以在某些环境中自动化,并且称为迁移。如果您想为数据库分别使用特定的VCS,您可以认为迁移工具就是这样的VCS。

还有一些工具可以比较两个DB状态并生成一个能够将第一个状态更改为第二个状态的差异。

答案 4 :(得分:1)

我认为这取决于您是通过使用其他工具以sql脚本或其他格式的形式管理数据库更改(如架构更改,wRAR提及的迁移),还是通过使用其他工具来管理您将此视为数据库管理,并使用传统的备份/恢复方法执行此操作。

根据我的经验到目前为止,虽然我不认为数据库管理不那么重要,但与实际代码更改相比,它确实发生在非常低​​的频率上。您的情况明显不同,但脚本文件和数据库工具的组合应该照顾它。

答案 5 :(得分:1)

您可以使用SQL源代码管理 - http://www.red-gate.com/products/sql-development/sql-source-control/

轻松地将SQL Server连接到Kiln

答案 6 :(得分:1)

这是现实。

数据库版本控制 - 也就是说DDL,DML,甚至是应用程序具有基本功能所需的必要参考数据的数据 - 与版本控制下的所有其他应用程序资产一样重要。 数据库永远不应该在任何特殊的例外情况下,因为它们的资产(对象和必要的参考数据)被认为不受版本控制。 自从

那他们为什么一直这样?简单。保持这些资产简单管理的工具链并不总是符合要求(在SQL Server的情况下,在Visual Studio 2008之前它没有附带Microsoft的第一方工具),并且工具链在供应商方面有所不同以供应商为基础。当这些工具链缺乏时,除非该组织采取措施弥补这一缺陷,否则这种缺陷仍然存在。它是技术债务,有些组织由于时间或(可悲)技能,当不容易使用的工具或需要将第三方工具集成到开发工作流程中时,不会优先考虑它。

最糟糕的是试图将旧项目置于版本控制之下,因为除了向业务部门出售这些价值之外,你必须让所有人同时与你们一起踢和尖叫。我不会不同意业务可能会有更紧迫的迫切需求,但是在版本控制下获取数据库资产需要在该列表中某处,即使它的优先级较低。

没有任何借口。我在这方面已经与足够多的项目经理,数据架构师,甚至CIO / CTO进行了斗争 - 我甚至已经明确指出,我正在开展的每个项目都有批评者。 需要完成,如果不是,则需要一个业务将同意完成的时间表。那些反对它的人需要被枪击,幸存者需要再次被击中。