原创:通过VS 2010+SVN为SQL Server提供数据库版本管理
对于一个软件企业来说,源代码就是公司全体智慧的结晶,绝不能有任何闪失。但对于公司产品的基石数据库怎么来进行统一管理呢?通常,是直接备份数据库文件的方式,或者生成数据库的部署脚本,来重复的备份。这个方法可行,却有些值得改进的地方。首先,太繁琐了,浪费精神;其二,不方便和其它项目同时管理。下面,就介绍我偶然看到的方法,当然,可能有很多人已经这么做了,但分享给那些还不知道的人。
大体思路:
- VS 2010 提供了一个项目类型,新建->数据库->SQL Server 2005 数据库对象 或 SQL Server 2008 数据库对象,完整的提供了SQL Server 的定义创建和生成部署脚本功能。
- 通过VS 2010下的数据->架构比较(Schema Compare)能将SQL Server数据库和SQLServer数据库项目差异比较出来,并提供双向同步功能。
- Subversion,提供基于文本的SQL语句版本管理支持。
本示例采用VisualSVN-Server(Subversion 服务器)、AnkhSvn(VS 2010的Svn 插件)、SQL Server2005、VS 2010,示例数据库为AdventureWorks。
因为安装的是英文版的VS2010,大家就对应着中文的看吧。
第一步:通过VS 2010 创建数据库项目。打开VS 2010,File->New->Project,在Recent Templates中选中Database->SQL Server,并在右面的项目类型中选中SQL Server 2005 Database Project,输入项目名称,并点击OK。
第二步:在新建的ExampleSystemSQL项目上点右键,选中菜单中的Import Database Objects and Settings,
会弹出一个对话框,让我们选择数据库。可以通过Tools->Connect to Database创建。为了简单,就直接选已有的AdventureWorks连接。
单击Start就开始将SQLServer2005中数据库AdventureWorks的定义取回到项目中来。
点击Finish,就可以看到AdventureWorks的定义了。
第三步,将整个项目添加到版本管理中。事先已在一台服务器上安装了VisualSVN-Server-2.5.8,并创建了一个库叫Unique,SVN地址是:https://server2003/svn/unique。同样,选中ExampleSystemSQ项目点右键,选择里面的Add Sulution to Subversion…
在弹出的对话框中输入Repository Url,https://server2003/svn/unique,如下图,并点击OK。如果需要认证的话,就输入在VisualSVN-Server中建立的用户名和密码。
在弹出的日志输入对话框中直接点击OK。刚才的步骤只是把项目添加的svn副本的本地,还没有提交,所以需要再次在解决方案上点右键,选中Commit Solution Changes,输入日志,点击OK,就行了。
至此,我们为AdventureWorks数据库创建了版本管理,那如果我们修改了AdventureWorks呢,该怎么实现同步呢,下面,就是VS 2010的强大之处了。首先,在AdventureWorks中创建了一个新表名字叫dbo.Table_1。再打开VS 2010中的Data->Schema Compare(架构比较)-> New Schema Comparison,配置源数据库和目标项目,如下图所示。Source Schema选择数据库,Target Schema 选择Project ExampleSystemSQL项目。
点击OK,VS 2010就开始进行架构比较,结果如下图:
可以看到刚刚新建的表Table_1,在空白处,点击右键,选择Write Updates,在确认对话框中点击OK,就会把新建表Table_1的定义保存到项目中。
马上,就可以在VS项目中看到新添加的Table_1的SQL脚本文件了。
接下来,就可以将更新的脚本提交到SVN中,与普通的C#项目没什么差别。
值得注意的一点是,在VS 2010 项目ExampleSystemSQL中,可以直接添加新表的定义,再同步到AdventureWorks数据库中,也是通过Data->Schema Compare(架构比较)->New Schema Compasion来实现的。同步是双向的。VS 2010 可以对ExampleSystemSQL项目生成部署脚本。
转载请注明作者博客地址:http://www.cnblogs.com/ProJKY