人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

使用SSIS創(chuàng)建同步數(shù)據(jù)庫數(shù)據(jù)任務(wù)的方法

發(fā)布日期:2022-01-13 12:22 | 文章來源:gibhub
下面我使用SSIS來演示一個實際例子。比如我有一個數(shù)據(jù)庫,出于備份數(shù)據(jù)或者其它的目的,會定期的對這個數(shù)據(jù)庫的數(shù)據(jù)遷移到其它的數(shù)據(jù)庫去。遷移的時候,有些新增的字段會被插入備份數(shù)據(jù)庫,而有些被修改過的字段也會在備份數(shù)據(jù)庫被修改?,F(xiàn)在我們就用SSIS來完成這項任務(wù)。 首先在我源數(shù)據(jù)庫db_source和目標(biāo)數(shù)據(jù)庫db_destination中運行以下SQL創(chuàng)建好需要的表,就以這一個表test_1來進行示范。
復(fù)制代碼 代碼如下:

CREATE TABLE [dbo].[test_1](
[Id] [int] IDENTITY(1,1) NOT NULL primary key,
[Name] [varchar](50) NULL,
[Age] [int] NULL
)

建好表好在源數(shù)據(jù)表中可以隨便加幾條記錄,目標(biāo)數(shù)據(jù)庫暫時留空。

現(xiàn)在我們打開VS,創(chuàng)建一個Intergration Services Project。(注意:如果SQL Server 裝的是Express版的話是沒有這個項目工程模板的)

創(chuàng)建好工程后,在Control Flow這個Tab下拖入一個Data Flow Task,如下圖:

雙擊這個Data Flow Task,我們就會進入Data Flow這個Tab標(biāo)簽中。

然后我們在左邊工具欄里找到OLE DB Source,繼續(xù)拖兩個OLE DB Source出來。分別給它們命名為Source DB和Destination DB。

將數(shù)據(jù)源拖出來后,雙擊它,可以對它進行一些設(shè)置,主要就是鏈接數(shù)據(jù)庫及選擇你要進行遷移的表或者視圖等設(shè)置,這里我就不詳細說明了。注意一點的是就像上圖所示,如果一個圖形上出現(xiàn)一個紅X的話說明設(shè)置有錯誤。

再來就是拖兩個Sort及一個Merge Join出來,將之前的數(shù)據(jù)源箭頭分別指向兩個Sort,最后兩個Sort出來的數(shù)據(jù)同時輸入Merge Join中。

分別雙擊兩個Sort,鉤選表中的ID,對ID這個字段進行一次排序。因為Merge Join這個流程要求輸入的數(shù)據(jù)是已排序好的。這個排序也可以直接在數(shù)據(jù)源中對它們的輸出字段設(shè)置SortKeyPosition這個屬性來排序。(詳見:http://msdn.microsoft.com/zh-cn/library/ms137653.aspx)

這里我們第一次從Sort拉箭頭到Merge Join的時候,會讓我們選擇這個輸入的數(shù)據(jù)是作為左輸入還是右輸入,我們按照圖示的那樣,左邊的作為左輸入,右邊的作為右輸入。然后我們雙擊Merge Join,按照如下圖所示設(shè)置:

這里打鉤的是這個流程之后輸出的數(shù)據(jù),Join Type需要選擇為Left outer join,因為左邊是我們的原始數(shù)據(jù)表,右邊是我們備份的表,右表可以看成是一個左表的一個子集,如果左表有的數(shù)據(jù),右表沒有的,那些就是需要新插入備份數(shù)據(jù)庫的數(shù)據(jù)。

現(xiàn)在我們需要一個分支,即新的數(shù)據(jù)需要插入備份數(shù)據(jù)庫中,而已有的數(shù)據(jù)需要更新為新的值。我們從工具欄中拖入一個Conditional Split來進行這樣的分支處理。我們將Merge Sort中的輸出指向Conditional Split,然后雙擊Conditional Split,如下圖所示設(shè)置(注意條件一個是ISNULL,一個是非ISNULL)。

這時它們的輸入值就被分成兩種條件輸出,最后我們再拖入一個OLE DB Destination來插入數(shù)據(jù)和一個OLE DB Command來更新數(shù)據(jù)庫,最終流程如下圖:

雙擊設(shè)置OLE DB Destionation,選擇好數(shù)據(jù)導(dǎo)入的目標(biāo)數(shù)據(jù)庫中的表,這里需要注意的就是要鉤選Keep identity這個選項,因為我創(chuàng)建表的時候?qū)D字段使用了自增屬性。

雙擊設(shè)置OLE DB Command,首先在Connection Managers這個Tab中選擇好鏈接對象,然后在Component Properties這個選項卡中,設(shè)置你的SqlCommand屬性。如下圖:

這里的參數(shù)值都是用?號來代替,之后在Column Mappings這個Tab中設(shè)置代替值實際代替的列,如下圖:

至此,任務(wù)就創(chuàng)建完畢了,沒有編寫任何代碼,直接拖拉完成了?,F(xiàn)在可以直接在VS中按F5運行看下效果,我們的目標(biāo)數(shù)據(jù)表將插入源數(shù)據(jù)表中的值。然后我們修改一下原數(shù)據(jù)表,再來運行一下上面這個任務(wù),就可以在目標(biāo)數(shù)據(jù)庫中看到更改了。

那么如何去定時完成任務(wù)哩?這里可以用SQL Server Agent去調(diào)用上面我們寫好的包,或者在Windows計劃任務(wù)中使用DTExec.exe去執(zhí)行上面的任務(wù)。

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部