SQL Delta实用案例介绍
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
因为项目中需要经常发布最新版本给客户,而每一次在发布之前我们都需要把checkin到source control的数据库脚本和开发数据库做一次比较,以确认所有的数据库脚本是可运行的并且最新。这样,如果有一个daily job去自动做这个事情,将会减轻项目的工作。 当然如果数据库是oracle,用toad可以轻松的解决这个问题。因为它有command-line的运行方式。 但是目前对于sql server的做数据库比较的工具中,我只看到有两个工具是比较成熟的。一个是sql compare, 一个是sql delta。sql compare貌似可以用command-line的运行方式。但是因为使用的是trial版本,我没有办法使用它的send-email的功能。sql delta也一样。但是sql delta提供了workbench以至于我可以生成结果文件,所以我就将就使用它了。 概述 本篇文章主要介绍SQL DELTA的简单使用。为了能够更加明了的说明其功能,本文将通过实际项目中的案例加以介绍。 主要容 SQL DELTA 简介 创建SQL DELTA项目 使用SQLDELTA 进行数据库结构同步 使用SQLDELTA进行数据库数据同步 生成数据报表 待续 SQLDELTA简介 SQLDELTA是一款便捷实用的数据库管理工具。使用它可以找到现在数据库项目与过去数据库的异同点。并可以使你的产品数据库与你的开发数据库同步,减少你因为同步数据库而进行复杂的工作。还有一个好处是你可以使用它的对比和同步功能来为你目前的项目创建一个供测试使用的数据库。可以批量的转移你的数据。 你可以从www.sqldelta.com上下载SQLDELTA工具。目前最新版本是SQL DELTA Version5.0。本文将采用SQL DELTA4 来做演示。 创建SQL DELTA项目 打开”SQL DELTA 4”程序,在”Projects”选项卡中,选择”New”,”Add New Project”,新建一个项目,为“JJKQ”。 通过右键新建的项目“Edit Project”,或者通过点击右边的向下箭头,可以编辑项目。 在项目中,源数据库和目标数据库配置如下图所示: 图1 SQLDELTA新建项目 注意: 在设置源数据库连接与目标数据库连接时,如果你是在一台机器上操作的话,务必确保两个数据库不同名,或是在不同的数据库实例下相同的数据库名,也可以使用虚拟机。 接着,点击图1 右下角的“Project Options”,选择要对比的对象,如图2 图2选择对比的对象 点击“OK” 在图1所示的界面中,点击左上角或右下角的”Compare DataBase”,对比两个数据库中我们选择要对比的对象。 图3 对比进度条 在对比过程中SQLDETAL还将连接数据库,此时可能再次要求你输入连接数据库的密码,如图4 图4 输入数据库连接密码 使用SQLDELTA 进行数据库结构同步 选择选项卡“Structure”,将为我们列出源数据库和目标数据库的异同点,如图5 图5 数据库对象对比结果 图5上半部分列出了数据库中的对象和对比的基本情况。下半部分则对每个对象对比的结果进行了详细的描述,其中=表示相同,<>表示不相同,三角号表示对象移动的方向:向左表示源数据库更新目标数据库,向右表示目标数据库更新源数据库。下面列举两个示例。 例1 :使用源数据库的表更新目标数据的表 选择图5种上半部分中type为数据表,statue为”<>”的行,对应的将在其下半部分显示出两个不同源的数据表结构哪里不一样,如图6所示”summary”选项卡中columns有1个”<>”。对应选择选项卡”Cols(1)”,如图7 所示,我们将看到,原来列sortname中数据类型不一样,源库中是varchar(50),目标库中是char(50) 图7 现在要使得目标库的sortname类型也为varchar(50),通过钩选图7上半部分的列表中对应的”Update”列中的钩选框(默认情况下是钩选的)。 点击图5中左上角的”Sync”同步图标。将生成数据库同步语句,此时你下图中右下角的”Run”按钮即可完成同步操作。 图8 生成同步数据库的SQL语句 如果同步成功的话,会显示如下语句: Updating dbo.attendanceinout Table dbo.attendanceinout Table Updated Successfully *** Script Completed For LHL-PC\SQLEXPRESS.lw_att2000 *** 说明更新目标表成功。 当我们关闭对话框时,SQLDELTA将再次进行一次数据库结构的比较,此时你将发现刚才不一样的表结构,已经同步,一样了。 例2:使用目标库中的存储过程更新源库中同构的存储过程。 查看两个存储过程的异同点方法,跟例1 相似,这不再赘述。不同地方如图9 图9 存储过程语句不一样 现在如果我们直接按”Sync”按钮,则会使用源库的存储过程更新目标库的。此时我们可以通过使用 中的Direction按钮来改变要更新的库。 点Direction按钮,选择”Update on (local).lw_att2000”,其中(local).lw_att2000为源库。此时对象列表中的Action列对应的值,将由”Update on LHL-PC\SQLEXRESS.lw_att2000”变为” Update on (local).lw_att2000”。然后再使用”Sync”按钮同步。 注意:在同步SQL语句的时候,可以会同步错误。此时你只要稍微修改下生成的同步SQL语句,然后再要更新的库中运行即可。
使用SQLDELTA进行数据库数据同步
选择选项卡”Data”,点击”Wizard”按钮,选择需要对比的数据的表,注意选择的表必需要有主键,如图10,选择CHECKINOUT,主键为userid和checktime 图10 选择要对比数据的表 可以选择”Next”根据自己的配置,对比数据,也可以直接进行对比。结果如图11 图11 数据对比结果 上半部分列表中,列Identical表示相同的记录数,Different表示不同的记录数,Missing表示源表中有但目标表没有的记录数,Additional表示源表中没有但目标表中有的记录数。 如果此时我们要将目标表中的记录同步到源表中,只要按照结构对比示例2 中存储过程通过的过程一样。 生成数据报表 选择选项卡”Reports”
其中 Strucure是生成指定数据库的结构对象的报表 Comparison生成两个数据库结构对象对比结果的报表 Data生成两个数据库数据对比情况的报表 Combined是以上三者的组合选项。 待续 本文只是简单介绍了SQLDELTA的使用,一些高级的应用还有待我们去发掘使用。 该文章在 2010/9/30 9:00:22 编辑过 |
关键字查询
相关文章
正在查询... |