需要使用Subversion管理数据库对象的良好方案/工作流程

时间:2009-04-21 14:09:06

标签: sql-server database svn stored-procedures

如何在SQL Server中跟踪/管理存储过程,视图和函数?

我想使用Subversion,但看起来我只需要保存&提交CREATE / ALTER语句。这可能对我有用,但我怀疑我最终会做很多唠叨。

是否有人对其数据库进行版本控制?有更好的方法吗?

在过去,人们刚刚评论了部分代码并将其留在了。或者,他们添加了一些“在2010年2月31日添加”的评论。它让我疯了,因为我知道有更好的方法。

我们在对象的标题中记录更改,但这非常有限。这将使我的生活更容易分辨版本。

其他信息
我们正在使用SQL Server 2005.我安装了Subversion(通过VisualSVN Server)和TortoiseSVN,但我对其他建议持开放态度。

通过数据库对象,我特指存储过程,视图和函数。

我只需要跟踪几张桌子。数据库是商业应用程序的后端,我们主要提取信息以进行报告

我发现了一个与stored procedure versioning

相关的问题

5 个答案:

答案 0 :(得分:2)

我们编写所有内容并将其放入Subversion中。没有脚本就没有任何内容可以加载到Prod(开发人员没有prod的权利),拥有prod权限的人只接受他们从Subversion加载的脚本。

答案 1 :(得分:1)

我们修改数据库,模式创建,dw,etl,存储过程就像任何其他代码一样,因为它是代码!

我也看到人们在标题中输入日期等。这通常是因为他们完全没有修改控制点。

答案 2 :(得分:1)

看一下liquibase,here

它为您管理您的sql更改/脚本,并可以通过钩子或脚本与svn一起应用它们。使各种设置变得容易,并有助于消除丢失触发器/ sproc / etc的情况......

答案 3 :(得分:0)

我不确定你对“数据库对象”的意思。这些只是表,视图,程序等还是数据?我的意思是每日创建数据?

假设您的意思是数据库架构定义。根据我的经验,只有一种方法来处理数据库模式定义(如果你没有NHibernate或类似的工具)。您编写从头开始创建数据库的sql脚本并将其签入。您使用相同的脚本来安装软件。您只需比较脚本文件即可看到差异。

答案 4 :(得分:0)

每当我通过这个练习时,它都归结为需要源控制的3个主要内容:

  1. 存储过程/视图/触发器(或多或少可以公平表示为“代码”的东西。这些非常简单,包括条件丢弃并在文件顶部创建。
  2. 表架构 - 如上所述的DROP / CREATE语句。您可以尝试使用ALTER语句,但它往往会变得非常混乱。
  3. 我们面临的最大挑战是强迫您进入一个系统,在这个系统中,您的数据库经常会回到初始状态 - 如果将DB带入可用/可测试的东西需要相当多的工作,那可能会很痛苦。在这种情况下,我们保留了一个脚本库,它将DB带到各种可用状态,源也控制了这些状态。

    1. 表格中的数据。我们在这里查看了几种方法 - 存储在像“TableName_Data.sql”这样的文件中的一系列INSERT语句,或者是在重建数据库时解析并插入的自定义构建工具的CSV文件。
    2. 为了简单起见,我们最终选择了INSERT语句。