如何保证开发过程中对数据库结构的更新顺利地迁移到产品服务器上。

应用程序升级常常包含着数据库的升级,数据库的升级通常会包含表结构的变化(表添加字段或者删除字段),视图的更新,存储过程的更新以及字典表数据的更新。而这些更新需要有时间顺序,即在执行更新脚本的时候,必须先执行更新表结构的脚本,然后才可以正确的执行修改视图和存储过程的脚本,所以我们要求在开发的过程中设计到数据库的变化时留下sql脚本,并遵守以下脚本的名称格式的规定命名变化脚本。

 

yyyymmddhhMM-yourname-{alter|drop|update|insert|delete}_{tablename|proc|viewname}_{entityname}.sql

 

说明:

第一段为日期段包括四位年份数字两位月份数字两位日期数字两位小时数字两位分钟数字,例如:200403071043

第二段为更新人的名字,如:yukaizhao

第三段包括操作和操作对象类型,操作对象名字,如:alter_table_UserAccount,alter_proc_login

完整的例子:200403071043- yukaizhao- alter_table_UserAccount.sql

 

在开发时,要严格安装以上规定记录数据库修改脚本,在发布新版本时,需要将所有脚本按照时间的先后顺序合并到一个脚本中(合并脚本的名字格式为:yyyymmddhhmm.sql包含截至到更新时的最新日期时间,可以做一个程序合并脚本),然后在测试服务器上面建立上一个版本数据库的结构,在测试服务器上面执行此脚本,如果没有错误,就可以在升级的时候执行合并的脚本,如果有错误则需要根据脚本名称记录的用户名找他纠错。

 

技巧:

1.  使用企业管理器修改完表之后,如何保存修改脚本


2.  如何设置每次修改了表结构之后自动提示保存修改脚本

在点击2中的按钮之后会出现下面的窗口,请按下图设置。

 

附件:

1.  合并脚本程序--下载

2.  1中程序的源码--下载

我的微博地址是:http://weibo.com/yukaizhao 我会把一些技术心得碎片写到微博中,欢迎关注。
posted @ 2007-03-06 13:28 玉开 阅读(3425) 评论(22) 编辑 收藏

 回复 引用 查看   
#1楼2007-03-06 13:58 |       
另一种思路供参考:建立数据库的版本,发布前运行脚本生成自动根据前后两个版本生成升级脚本。好像这样做更佳哦!
 回复 引用   
#2楼2007-03-06 14:15 | arcticfox[未注册用户]
还是用版本控制方式比较好!
 回复 引用 查看   
#3楼[楼主]2007-03-06 14:17 | 玉开      
@悟
这个恐怕不容易实现吧?比较的算法恐怕会很难吧,没有研究过。

你既然有思路,有没有这样做过?如果做过,拿出来给大家分享一下呀。

 回复 引用 查看   
#4楼[楼主]2007-03-06 14:18 | 玉开      
@arcticfox
数据库的版本控制怎么做??

 回复 引用 查看   
#5楼2007-03-06 15:00 | e表      
不错.
 回复 引用 查看   
#6楼2007-03-06 15:01 | Jeffrey Zhao      
除了第一次上线是用完整的数据库创建脚本,以后都用Change Scripts。
 回复 引用 查看   
#7楼2007-03-06 15:07 | 高海东      
在sql2005上知道怎么样做吗
 回复 引用 查看   
#8楼[楼主]2007-03-06 15:32 | 玉开      
@Jeffrey Zhao
呵呵,这个回复不够认真呀,在产品升级的过程中有可能添加表,视图,存储过程的,怎么能都用Change script呢。

 回复 引用 查看   
#9楼[楼主]2007-03-06 15:32 | 玉开      
@高海东
期待专家给出更好的办法

 回复 引用   
#10楼2007-03-07 09:10 | javanb[未注册用户]
数据库的更新始终是头疼的问题,主要是兼容的问题,还有用户数据保护的问题,显然版本控制是比较理想的选择.

----------------------------------------------
http://www.javanb.com

 回复 引用   
#11楼2007-03-07 10:20 | Alex[未注册用户]
VS6不清楚,但VS2003已经和VSS6.0集成了存储过程等编成脚本的版本控制功能,可以搜索SQL Server+version control,有很多文章的。

到了VS2005,从Pro版本以上,都可以安装Database Professional组件(http://msdn2.microsoft.com/en-us/teamsystem/aa718764.aspx),其中添加的对数据库开发、测试的一系列功能,我经常用到的有schema compare、data compare、rename refactoring等。Database Professional对数据库中任何对象的改变都可以用"change script"表示出来,并且自动应用更新至目标数据库,可以满足您的要求了。

 回复 引用 查看   
#12楼[楼主]2007-03-07 13:05 | 玉开      
@javanb
请问数据库的版本控制如何实现

 回复 引用   
#13楼2007-03-07 13:29 | guest[未注册用户]
不错.
 回复 引用   
#14楼2007-03-07 19:44 | moslem[未注册用户]
微软的推出的 VS 2005 Team Edition for Database Professionals 不就是干这个的?
 回复 引用   
#15楼2007-03-07 19:59 | yukaizhao[未注册用户]
@moslem
没有用过,有时间看看

 回复 引用 查看   
#16楼2007-03-09 21:00 | Jeffrey Zhao      
@玉开
我说的Change Scripts的意思是“在之前的基础上进行修改的脚本”,我想这是必然的做法吧。就算添加删除,用的也使Change Scripts,在这里它指“一类”事务,呵呵。

 回复 引用   
#17楼2007-05-13 17:19 | John[未注册用户]
数据同步分析器是一款数据库工具软件,主要用于分析两个数据库的结构差异及数据差异,结构差异分析包括关键字、索引、表结构、缺省值、视图、存储过程、函数、规则、默认值、触发器等, 并可自动生成数据库结构同步脚本 。数据差异亦可以按关键字或全字段比较。

软件目前支持 MS SQLServer 、 MS Access 数据库, 期待支持到 Oracle , MySQL, InterBase, Sybase, DB2等其他数据库类型。

http://mysoftway.w990.9410.com/RealDBSunch.html

 回复 引用 查看   
#18楼[楼主]2007-05-14 09:32 | 玉开      
@John
这个工具不错

 回复 引用 查看   
#19楼2010-07-06 14:11 | www.mangago.com      
不同意楼主观点,拍砖!
 回复 引用 查看   
#20楼2010-07-06 14:11 | www.mangago.com      
不完全赞同,有争议!
 回复 引用 查看   
#21楼2010-07-06 14:11 | www.mangago.com      
继续努力,加油!
 回复 引用 查看   
#22楼2010-07-06 14:11 | www.mangago.com      
此文不错,值得推荐!
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 665370 tFtJqT/d0Bc=