如何在SQL Server中跟踪/管理存储过程,视图和函数?
我想使用Subversion,但看起来我只需要保存&提交CREATE / ALTER语句。这可能对我有用,但我怀疑我最终会做很多唠叨。
是否有人对其数据库进行版本控制?有更好的方法吗?
在过去,人们刚刚评论了部分代码并将其留在了。或者,他们添加了一些“在2010年2月31日添加”的评论。它让我疯了,因为我知道有更好的方法。
我们在对象的标题中记录更改,但这非常有限。这将使我的生活更容易分辨版本。
其他信息
我们正在使用SQL Server 2005.我安装了Subversion(通过VisualSVN Server)和TortoiseSVN,但我对其他建议持开放态度。
通过数据库对象,我特指存储过程,视图和函数。
我只需要跟踪几张桌子。数据库是商业应用程序的后端,我们主要提取信息以进行报告
我发现了一个与stored procedure versioning
相关的问题答案 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个主要内容:
我们面临的最大挑战是强迫您进入一个系统,在这个系统中,您的数据库经常会回到初始状态 - 如果将DB带入可用/可测试的东西需要相当多的工作,那可能会很痛苦。在这种情况下,我们保留了一个脚本库,它将DB带到各种可用状态,源也控制了这些状态。
为了简单起见,我们最终选择了INSERT语句。