数据库版本控制问题

来源:互联网 发布:c c 图像处理编程 编辑:程序博客网 时间:2024/06/09 15:29

        数据库版本控制问题困扰我很长时间了.每次更改数据库,都需要做详细的记录,稍不留神就出问题.找过不少工具,自己也想着用存储过程实现,效果都不怎么好.最近找到了SQLSourceSafe,也找到了这篇文章,转到我的地以方便以后查看.对于14天的那个限制我也想办法给改了一下.估计够我用的啦.(原文地址:http://www.cnblogs.com/walkinhill/archive/2008/09/17/141228.html)
         当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表、存储过程和视图等对象的变动是非常重要的。试想,如果我们的系统已经在线上开始运行或者说已经发布一段时间了,这时,如果我们为这个系统添加新功能,并涉及数据库改动时,往往只是已运行的数据库进行局部变更,而不会全替换。如果我们不能将所有的数据库改动反映到新系统里面,而发布了新的系统,可能就会导致应用程序发生异常甚至出现漏洞。

现在实际上已经有很多的工具可以监控数据库的变更和维护数据库的版本,比如说:SQLSourceSafe、SQL ScriptSafe、Query Commander,它们都是挺有效的。不过我熟悉的是SQLSourceSafe,就简单介绍一下吧,希望对大家有用。

 SQLSourceSafe 是一个基于Visual SourceSafe的工具,它可以记录数据库的所有改动,可以对比SQLSourceSafe中存储的版本与数据库中的不同(可视化的比较)、可以撤销数据库对象的更改等等。具体的功能很多,大家可以看它的帮助。我就简单介绍一下基本功能

1、建立新的数据库连接,保存现有版本。
(1)新建一个VSS数据库(使用Visual Source Safe Administrator)

(2)在SQLSourceSafe文件菜单中选择“New Connnection”,就会弹出下面的对话框: 
 
(3)填入相关的信息,然后选择Next ,接着出现选择数据库
 
(4)选择完后单击next,就会在主窗口显示所有的数据库对象,并且在VSS里面创建了一个项目,其中左边是存储在vss中的项目,右边是数据库中的真实数据对象,至此,所有的数据库对象的当前版本都存储在VSS中。
 

2、Check-out数据库对象并且修改

(1)要修改数据库对象,并保存修改历史,应先在SQLSourceSafe将对象check-out,比如要修改Tables里的Customers表,可以在左边选中该表,右键选择check-out,此时就会出现如下图的情况(红外标记),这时你就可以在SQLServer企业管理器或者在SQLSourceSafe里面修改该表。如果要修改其他的对象,操作是一样的。

3、将修改保存到VSS里面的版本历史中
修改完了以后,只需选中该对象,右键选择“Check-in”,该对象的所有更改将保存到版本历史中。
4、查看历史版本和对比改动
(1)查看特定对象的历史和对比改动
选择要查看的对象,右键选择Show History…,将显示一个类似VSS里面历史版本浏览的对话框:

选择两个版本,单击Diff,就可以对比改动:

5 、对比现在的VSS版本和数据库实际版本的区别
当你使用外部工具,如企业管理器修改了数据库,想看看修改后的数据库与存储的版本有什么区别时,可以使用SQLSourceSafe的功能,方法是选择特定的对象或者整个数据库,然后右键选择“show differences”,SQLSourceSafe就会对比所有的选定对象的VSS版本和SQL Server真实版本的区别,如图:

双击黄色显示的对象,就可以看到详细的区别。

6、原则上,SQLSourceSafe要求,当你要改动数据库时(无论是用SQLSourceSafe或外部工具),都要在SQLSourceSafe里先Check-out待修改的对象,但是如果我们预先没有check-out怎么办呢?
如果碰到这种情况,你可以选择已经被外部修改了的对象,然后选择check-out,这时会显示一个对话框,提醒你该对象已经被外部修改了,是否先将数据库中的对象恢复到与VSS保存的一样?

此时,我们一般不会选择yes的,因为我们不想丢弃在外部的修改,当选择no时,当前的修改就会保持与SQLServer一致,此时我们再Check-in,外部的修改就会保存到VSS里面了。

原创粉丝点击