使用场景:
在团队开发中,每一个人都有可能随时更新数据库,这时候数据库中数据和架构等信息都会发生变化。如果更新不及时,就会发生数据错误或数据丢失的风险,影响团队的开发效率和 项目进度,这时候我们该怎么办呢?VS2008 Team System版本中就提供了解决这个问题的工具。使用这个工具,我们可以比较数据库更改前后的架构和数据的具体改变信息,并且可以生成数据和架构更新脚本,在原来的老数据库中执行脚本,就可以将数据库更新到最新,而且数据库中没有变更的数据和架构不会受到影响。
比较之前,首先一定要备份目标数据库【Target Database】,以防万一数据更新失败。将目标数据库【Target Database】和源数据库【Source Database】一起附加到SQL Server 2005中,然后在VS2008中分别添加二个连接字符串,连接这二个数据库。
建议:将从服务器【SVN】上Down下来的数据库作为Target Database,将我们本机上更新过的数据库作为Source Database,进行架构和数据比较并更新,确认更新成功后,提交Target Database至服务器。
在本实例中,ISACADB为待更新的目标数据库,ISACADB-S为待比较的源数据库,比较更新后的结果是ISACADB被更新到与ISACADB-S一致。
VS2008中比较二个数据库的架构【Schema】并更新的步骤:
一、打开VS2008,点击菜单上的Data==>Schema Compare==>New Schema Comparison…
二、在弹出窗体中,按下图分别在Source Schema下和Target Schema下选择相应的Database,其中Source Schema下选择的数据库【ISACADB-S】是待比较的数据源,是Target Schema下选择的数据库【ISACADB】被更新的依据。
三、选择好数据库后,点击OK按钮,开始执行架构比较,完成后,显示如下界面。
选择图中上面的数据库表或存储过程,下面的窗口二侧会分别以不同颜色高亮显示Source和Target Database中不相同部分的内容。
四、点击VS2008中如下图的工具栏中的紫色方框内的按钮【Show Schema Update Script】,会在vs2008的下方显示整个数据库的全部更新脚本;点击其右侧的刷新【Refresh】按钮,则会重新进行比较;点击Write Updates按钮,会直接执行更新,使Target Database的架构与Source Database一致,点击Write Updates左侧的按钮,可以重新设置Compare的二个Database;最左侧的按钮可以设置显示那些比较的结果。
五、导出脚本,可以直接复制上衣步骤中的脚本,也可以点击VS2008中如下图的工具栏的二个按钮,Export To Editor是将脚本导出到VS2008中的编辑器中,Export To File则是将脚本导出到文件中。
六、执行上一步导出的脚本,将Target Database的架构更新到与Source Database的架构一致。
七、在Target Database执行更新脚本成功后,检查Target Database的架构更新是否正确。方法是:将更新后的Target Database与Source Database进行架构比较,看比较结果是否完全一致,如果不一致,则检查错误原因;或者恢复原来的Target Database【已备份】,重新进行更新,直到更新正确。
VS2008中比较二个数据库的数据并更新的步骤:
一、打开VS2008,点击菜单上的Data==> Data Compare==>New Data Comparison…
二、在弹出窗体中,按下图分别在Source Database下和Target Database下选择相应的Database,其中Source Database下选择的数据库【ISACADB-S】是待比较的数据源,是Target Database下选择的数据库【ISACADB】被更新的依据。并在下面设置比较条件,点击Next按钮则可以进一步设置要比较的Tables、StoredProcedures、Views等,点击Finish则直接按默认【只比较Tables】进行数据比较。
三、点击Finish按钮后,开始执行数据比较,完成后,显示如下界面。
四、下面的所有步骤和上面的架构比较时基本一样,此处省略。
补充:
Visual Studio 2005 Team System版本中默认是没有上面的功能的,需要安装下面的插件才能使用以上功能。
Visual Studio 2005 Team Edition for Database Professionals Add-on for Visual Studio 2005 Team Suite Edition下载地址: