使用SSIS複製動態資料行

有一位網友提到說
要把 A 電腦SQL SERVER 資料庫其中一個 table 傳至 B 電腦SQL SERVER 資料庫中 table 裡,我是先用ssis去做設定的(資料流程工作),但是我在 A 電腦資料庫 table 會隨時去增加資料行(column),但無法動態把新的資料行(column)一起傳至 B 電腦資料庫中 table,我在 B 電腦資料庫中 table只看到舊有的資料行(column)資料內容,但新增加的資料行(column)無法一起傳過來,請問阿德要如何解決?

有一位網友提到說

要把 A 電腦SQL SERVER 資料庫其中一個 table 傳至 B 電腦SQL SERVER 資料庫中 table 裡,我是先用ssis去做設定的(資料流程工作),但是我在 A 電腦資料庫 table 會隨時去增加資料行(column),但無法動態把新的資料行(column)一起傳至 B 電腦資料庫中 table,我在 B 電腦資料庫中 table只看到舊有的資料行(column)資料內容,但新增加的資料行(column)無法一起傳過來,請問阿德要如何解決?

以上的問題,我試作了一下SSIS發現有一個控制項可以達到此目的,以下為解決方法

以Sql server 2008 r2的ssis來當作demo

Step1:在ssis中的控級流程頁籤中,拉出一個”傳送Sql server物件工作”

image

Step2: double click這個控制元件,選擇左方的物件,先將連接的來源及目的地資料庫設定好

SNAGHTML18934ae

Step3:接下來就是選擇你要copy的table,選擇的方式如下,其他的什麼view或procedure之類的都是以此類推

image

Step4:設定在複製前先刪除目的地的table,再重建資料表,並將來源資料表的資料複製到目的地資料表中

這些選項你可以依你自己的情況設定,不一定都要照我的,反正在一開始初期測試時就多試試看結果會是如何吧

image

Step5:在下方的資料表選項中,記得要複製pk鍵及索引

image

Step6:以下為執行結果,一個成功後,就可以將這個物件複製成多個,只是去改目的地資料庫。

以下是我的原始來源資料表中,然後我再另外加一個col上去

image

執行完這個物件後

image

目的資料庫中也會產生一個一模一樣的資料表,不管是欄位還是資料內容及key都有

image

使用了這個控制項,就可以不必擔心來源資料表的欄位異動了,這樣目的資料表就會

是同步的了。