Visual Studio 2008中如何比较二个数据库的架构【Schema】和数据【Data】并同步-阿里云开发者社区

开发者社区> 不能超过五> 正文

Visual Studio 2008中如何比较二个数据库的架构【Schema】和数据【Data】并同步

简介: 使用场景: 在团队开发中,每一个人都有可能随时更新数据库,这时候数据库中数据和架构等信息都会发生变化。如果更新不及时,就会发生数据错误或数据丢失的风险,影响团队的开发效率和 项目进度,这时候我们该怎么办呢?VS2008 Team System版本中就提供了解决这个问题的工具。
+关注继续查看

使用场景:

在团队开发中,每一个人都有可能随时更新数据库,这时候数据库中数据和架构等信息都会发生变化。如果更新不及时,就会发生数据错误或数据丢失的风险,影响团队的开发效率和 项目进度,这时候我们该怎么办呢?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…  

img_64a41f7e1daea241b405104ee31e9d6e.png

 

二、在弹出窗体中,按下图分别在Source Schema下和Target Schema下选择相应的Database,其中Source Schema下选择的数据库【ISACADB-S】是待比较的数据源,是Target Schema下选择的数据库【ISACADB】被更新的依据。  

img_03ea6c5dd890e3788bc38f4c7b888b4d.png

 

三、选择好数据库后,点击OK按钮,开始执行架构比较,完成后,显示如下界面。

选择图中上面的数据库表或存储过程,下面的窗口二侧会分别以不同颜色高亮显示SourceTarget Database中不相同部分的内容。  

img_2ad44c93af44834192b01e743c2d467f.png

 

四、点击VS2008中如下图的工具栏中的紫色方框内的按钮【Show Schema Update Script】,会在vs2008的下方显示整个数据库的全部更新脚本;点击其右侧的刷新【Refresh】按钮,则会重新进行比较;点击Write Updates按钮,会直接执行更新,使Target Database的架构与Source Database一致,点击Write Updates左侧的按钮,可以重新设置Compare的二个Database;最左侧的按钮可以设置显示那些比较的结果。  

img_c9e660fbc0b5f5e5779c63c6ed69b6d4.png

 

img_abb98edcdade4cfafce08d1e6ff5e4d9.png

 

五、导出脚本,可以直接复制上衣步骤中的脚本,也可以点击VS2008中如下图的工具栏的二个按钮,Export To Editor是将脚本导出到VS2008中的编辑器中,Export To File则是将脚本导出到文件中。  

img_8f213a294a1c88a7cf1f09e347fc070d.png

 

六、执行上一步导出的脚本,将Target Database的架构更新到与Source Database的架构一致。

 

七、Target Database执行更新脚本成功后,检查Target Database的架构更新是否正确。方法是:将更新后的Target DatabaseSource Database进行架构比较,看比较结果是否完全一致,如果不一致,则检查错误原因;或者恢复原来的Target Database【已备份】,重新进行更新,直到更新正确。

 

VS2008中比较二个数据库的数据并更新的步骤:

 

一、打开VS2008,点击菜单上的Data==> Data Compare==>New Data Comparison…  

img_cc99f8a405e20788717553524f2390b6.png

 

二、在弹出窗体中,按下图分别在Source Database下和Target Database下选择相应的Database,其中Source Database下选择的数据库【ISACADB-S】是待比较的数据源,是Target Database下选择的数据库【ISACADB】被更新的依据。并在下面设置比较条件,点击Next按钮则可以进一步设置要比较的TablesStoredProceduresViews等,点击Finish则直接按默认【只比较Tables】进行数据比较。  

img_348ece40220bd7b6a0fa295c48a8a317.png

 

三、点击Finish按钮后,开始执行数据比较,完成后,显示如下界面。  

img_a5a7d328ba2f83f842d40c049c5dfc2d.png

 

四、下面的所有步骤和上面的架构比较时基本一样,此处省略。

补充:

Visual Studio 2005 Team System版本中默认是没有上面的功能的,需要安装下面的插件才能使用以上功能。

Visual Studio 2005 Team Edition for Database Professionals Add-on for Visual Studio 2005 Team Suite Edition下载地址:

http://www.microsoft.com/downloads/details.aspx?familyid=7de00386-893d-4142-a778-992b69d482ad&displaylang=en

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android Studio 通过一个登录功能介绍SQLite数据库的使用
前言:         SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
4226 0
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)
4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)     作者:夏春涛 xchunta@163.com 转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609166.
735 0
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(2)
4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(2) 作者:夏春涛 xchunta@163.com 转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609132.
497 0
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(3)
4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(3)   作者:夏春涛 xchunta@163.com 转载请注明来源: http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609144.
868 0
PostgreSQL不同模式(SCHEMA)之间迁移数据
PostgreSQL不同模式(SCHEMA)之间迁移数据。
8224 0
Oracle9i数据库DataGuard实施及维护手册3
以下命令均在Standby端执行 1.如果是使用ARCH传递redo数据,那么执行以下命令: 检查是否有gap archive SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP; 如果有则register...
842 0
使用 Math 类操作数据
使用 Math 类操作数据 Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.
573 0
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(4)
4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(4)     作者:夏春涛 xchunta@163.com 转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609154.
681 0
+关注
不能超过五
主要关注分布式系统、项目管理、教育行业互联网应用研发和运维
22
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载