SQL Delta實用案例介紹
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
因為項目中需要經(jīng)常發(fā)布最新版本給客戶,而每一次在發(fā)布之前我們都需要把checkin到source control的數(shù)據(jù)庫腳本和開發(fā)數(shù)據(jù)庫做一次比較,以確認所有的數(shù)據(jù)庫腳本是可運行的并且最新。這樣,如果有一個daily job去自動做這個事情,將會減輕項目的工作。 當(dāng)然如果數(shù)據(jù)庫是oracle,用toad可以輕松的解決這個問題。因為它有command-line的運行方式。 但是目前對于sql server的做數(shù)據(jù)庫比較的工具中,我只看到有兩個工具是比較成熟的。一個是sql compare, 一個是sql delta。sql compare貌似可以用command-line的運行方式。但是因為使用的是trial版本,我沒有辦法使用它的send-email的功能。sql delta也一樣。但是sql delta提供了workbench以至于我可以生成結(jié)果文件,所以我就將就使用它了。 概述 本篇文章主要介紹SQL DELTA的簡單使用。為了能夠更加明了的說明其功能,本文將通過實際項目中的案例加以介紹。 主要容 SQL DELTA 簡介 創(chuàng)建SQL DELTA項目 使用SQLDELTA 進行數(shù)據(jù)庫結(jié)構(gòu)同步 使用SQLDELTA進行數(shù)據(jù)庫數(shù)據(jù)同步 生成數(shù)據(jù)報表 待續(xù) SQLDELTA簡介 SQLDELTA是一款便捷實用的數(shù)據(jù)庫管理工具。使用它可以找到現(xiàn)在數(shù)據(jù)庫項目與過去數(shù)據(jù)庫的異同點。并可以使你的產(chǎn)品數(shù)據(jù)庫與你的開發(fā)數(shù)據(jù)庫同步,減少你因為同步數(shù)據(jù)庫而進行復(fù)雜的工作。還有一個好處是你可以使用它的對比和同步功能來為你目前的項目創(chuàng)建一個供測試使用的數(shù)據(jù)庫??梢耘康霓D(zhuǎn)移你的數(shù)據(jù)。 你可以從www.sqldelta.com上下載SQLDELTA工具。目前最新版本是SQL DELTA Version5.0。本文將采用SQL DELTA4 來做演示。 創(chuàng)建SQL DELTA項目 打開”SQL DELTA 4”程序,在”Projects”選項卡中,選擇”New”,”Add New Project”,新建一個項目,為“JJKQ”。 通過右鍵新建的項目“Edit Project”,或者通過點擊右邊的向下箭頭,可以編輯項目。 在項目中,源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫配置如下圖所示: 圖1 SQLDELTA新建項目 注意: 在設(shè)置源數(shù)據(jù)庫連接與目標(biāo)數(shù)據(jù)庫連接時,如果你是在一臺機器上操作的話,務(wù)必確保兩個數(shù)據(jù)庫不同名,或是在不同的數(shù)據(jù)庫實例下相同的數(shù)據(jù)庫名,也可以使用虛擬機。 接著,點擊圖1 右下角的“Project Options”,選擇要對比的對象,如圖2 圖2選擇對比的對象 點擊“OK” 在圖1所示的界面中,點擊左上角或右下角的”Compare DataBase”,對比兩個數(shù)據(jù)庫中我們選擇要對比的對象。 圖3 對比進度條 在對比過程中SQLDETAL還將連接數(shù)據(jù)庫,此時可能再次要求你輸入連接數(shù)據(jù)庫的密碼,如圖4 圖4 輸入數(shù)據(jù)庫連接密碼 使用SQLDELTA 進行數(shù)據(jù)庫結(jié)構(gòu)同步 選擇選項卡“Structure”,將為我們列出源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的異同點,如圖5 圖5 數(shù)據(jù)庫對象對比結(jié)果 圖5上半部分列出了數(shù)據(jù)庫中的對象和對比的基本情況。下半部分則對每個對象對比的結(jié)果進行了詳細的描述,其中=表示相同,<>表示不相同,三角號表示對象移動的方向:向左表示源數(shù)據(jù)庫更新目標(biāo)數(shù)據(jù)庫,向右表示目標(biāo)數(shù)據(jù)庫更新源數(shù)據(jù)庫。下面列舉兩個示例。 例1 :使用源數(shù)據(jù)庫的表更新目標(biāo)數(shù)據(jù)的表 選擇圖5種上半部分中type為數(shù)據(jù)表,statue為”<>”的行,對應(yīng)的將在其下半部分顯示出兩個不同源的數(shù)據(jù)表結(jié)構(gòu)哪里不一樣,如圖6所示”summary”選項卡中columns有1個”<>”。對應(yīng)選擇選項卡”Cols(1)”,如圖7 所示,我們將看到,原來列sortname中數(shù)據(jù)類型不一樣,源庫中是varchar(50),目標(biāo)庫中是char(50) 圖7 現(xiàn)在要使得目標(biāo)庫的sortname類型也為varchar(50),通過鉤選圖7上半部分的列表中對應(yīng)的”Update”列中的鉤選框(默認情況下是鉤選的)。 點擊圖5中左上角的”Sync”同步圖標(biāo)。將生成數(shù)據(jù)庫同步語句,此時你下圖中右下角的”Run”按鈕即可完成同步操作。 圖8 生成同步數(shù)據(jù)庫的SQL語句 如果同步成功的話,會顯示如下語句: Updating dbo.attendanceinout Table dbo.attendanceinout Table Updated Successfully *** Script Completed For LHL-PC\SQLEXPRESS.lw_att2000 *** 說明更新目標(biāo)表成功。 當(dāng)我們關(guān)閉對話框時,SQLDELTA將再次進行一次數(shù)據(jù)庫結(jié)構(gòu)的比較,此時你將發(fā)現(xiàn)剛才不一樣的表結(jié)構(gòu),已經(jīng)同步,一樣了。 例2:使用目標(biāo)庫中的存儲過程更新源庫中同構(gòu)的存儲過程。 查看兩個存儲過程的異同點方法,跟例1 相似,這不再贅述。不同地方如圖9 圖9 存儲過程語句不一樣 現(xiàn)在如果我們直接按”Sync”按鈕,則會使用源庫的存儲過程更新目標(biāo)庫的。此時我們可以通過使用 中的Direction按鈕來改變要更新的庫。 點Direction按鈕,選擇”Update on (local).lw_att2000”,其中(local).lw_att2000為源庫。此時對象列表中的Action列對應(yīng)的值,將由”Update on LHL-PC\SQLEXRESS.lw_att2000”變?yōu)?/SPAN>” Update on (local).lw_att2000”。然后再使用”Sync”按鈕同步。 注意:在同步SQL語句的時候,可以會同步錯誤。此時你只要稍微修改下生成的同步SQL語句,然后再要更新的庫中運行即可。
使用SQLDELTA進行數(shù)據(jù)庫數(shù)據(jù)同步
選擇選項卡”Data”,點擊”Wizard”按鈕,選擇需要對比的數(shù)據(jù)的表,注意選擇的表必需要有主鍵,如圖10,選擇CHECKINOUT,主鍵為userid和checktime 圖10 選擇要對比數(shù)據(jù)的表 可以選擇”Next”根據(jù)自己的配置,對比數(shù)據(jù),也可以直接進行對比。結(jié)果如圖11 圖11 數(shù)據(jù)對比結(jié)果 上半部分列表中,列Identical表示相同的記錄數(shù),Different表示不同的記錄數(shù),Missing表示源表中有但目標(biāo)表沒有的記錄數(shù),Additional表示源表中沒有但目標(biāo)表中有的記錄數(shù)。 如果此時我們要將目標(biāo)表中的記錄同步到源表中,只要按照結(jié)構(gòu)對比示例2 中存儲過程通過的過程一樣。 生成數(shù)據(jù)報表 選擇選項卡”Reports”
其中 Strucure是生成指定數(shù)據(jù)庫的結(jié)構(gòu)對象的報表 Comparison生成兩個數(shù)據(jù)庫結(jié)構(gòu)對象對比結(jié)果的報表 Data生成兩個數(shù)據(jù)庫數(shù)據(jù)對比情況的報表 Combined是以上三者的組合選項。 待續(xù) 本文只是簡單介紹了SQLDELTA的使用,一些高級的應(yīng)用還有待我們?nèi)グl(fā)掘使用。 該文章在 2010/9/30 9:00:22 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |