程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 應用SSIS創立同步數據庫數據義務的辦法

應用SSIS創立同步數據庫數據義務的辦法

編輯:MSSQL

應用SSIS創立同步數據庫數據義務的辦法。本站提示廣大學習愛好者:(應用SSIS創立同步數據庫數據義務的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是應用SSIS創立同步數據庫數據義務的辦法正文


這些包可以自力應用,也能夠與其他包一路應用以知足龐雜的營業需求。Integration Services 可以提取和轉換來自多種源(如 XML 數據文件、立體文件和關系數據源)的數據,然後將這些數據加載到一個或多個目的。(摘自MSDN,更多具體信息可參考:http://technet.microsoft.com/zh-cn/library/ms141026(v=sql.105).aspx)

上面我應用SSIS來演示一個現實例子。好比我有一個數據庫,出於備份數據或許其它的目標,會按期的對這個數據庫的數據遷徙到其它的數據庫去。遷徙的時刻,有些新增的字段會被拔出備份數據庫,而有些被修正過的字段也會在備份數據庫被修正。如今我們就用SSIS來完成這項義務。

起首在我源數據庫db_source和目的數據庫db_destination中運轉以下SQL創立好須要的表,就以這一個表test_1來停止示范。


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


建好表好在源數據表中可以隨意加幾筆記錄,目的數據庫臨時留空。

如今我們翻開VS,創立一個Intergration Services Project。(留意:假如SQL Server 裝的是Express版的話是沒有這個項目工程模板的)

 

創立好工程後,在Control Flow這個Tab下拖入一個Data Flow Task,以下圖:

 

雙擊這個Data Flow Task,我們就會進入Data Flow這個Tab標簽中。

 

然後我們在右邊對象欄裡找到OLE DB Source,持續拖兩個OLE DB Source出來。分離給它們定名為Source DB和Destination DB。

 

將數據源拖出來後,雙擊它,可以對它停止一些設置,重要就是鏈接數據庫及選擇你要停止遷徙的表或許視圖等設置,這裡我就不具體解釋了。留意一點的是就像上圖所示,假如一個圖形上湧現一個紅X的話解釋設置有毛病。

再來就是拖兩個Sort及一個Merge Join出來,將之前的數據源箭頭分離指向兩個Sort,最初兩個Sort出來的數據同時輸出Merge Join中。

分離雙擊兩個Sort,鉤選表中的ID,對ID這個字段停止一次排序。由於Merge Join這個流程請求輸出的數據是已排序好的。這個排序也能夠直接在數據源中對它們的輸入字段設置SortKeyPosition這個屬性來排序。(詳見:http://msdn.microsoft.com/zh-cn/library/ms137653.aspx)

這裡我們第一次從Sort拉箭頭到Merge Join的時刻,會讓我們選擇這個輸出的數據是作為左輸出照樣右輸出,我們依照圖示的那樣,右邊的作為左輸出,左邊的作為右輸出。然後我們雙擊Merge Join,依照以下圖所示設置:

這裡打鉤的是這個流程以後輸入的數據,Join Type須要選擇為Left outer join,由於右邊是我們的原始數據表,左邊是我們備份的表,右表可以算作是一個左表的一個子集,假如左表有的數據,右表沒有的,那些就是須要新拔出備份數據庫的數據。

如今我們須要一個分支,即新的數據須要拔出備份數據庫中,罷了有的數據須要更新為新的值。我們從對象欄中拖入一個Conditional Split來停止如許的分支處置。我們將Merge Sort中的輸入指向Conditional Split,然後雙擊Conditional Split,以下圖所示設置(留意前提一個是ISNULL,一個長短ISNULL)。

這時候它們的輸出值就被分紅兩種前提輸入,最初我們再拖入一個OLE DB Destination來拔出數據和一個OLE DB Command來更新數據庫,終究流程以下圖:

 

雙擊設置OLE DB Destionation,選擇好數據導入的目的數據庫中的表,這裡須要留意的就是要鉤選Keep identity這個選項,由於我創立表的時刻對ID字段應用了自增屬性。

雙擊設置OLE DB Command,起首在Connection Managers這個Tab當選擇好鏈接對象,然後在Component Properties這個選項卡中,設置你的SqlCommand屬性。以下圖:

 

這裡的參數值都是用?號來取代,以後在Column Mappings這個Tab中設置取代值現實取代的列,以下圖:

至此,義務就創立終了了,沒有編寫任何代碼,直接拖沓完成了。如今可以直接在VS中按F5運轉看下後果,我們的目的數據表將拔出源數據表中的值。然後我們修正一下原數據表,再來運轉一下下面這個義務,便可以在目的數據庫中看到更改了。

那末若何去准時完成義務哩?這裡可以用SQL Server Agent去挪用下面我們寫好的包, 或許在Windows籌劃義務中應用DTExec.exe去履行下面的義務。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved