這篇文章其實是我另一篇文章的延伸,因為有一位網友提出了一個如我文章標題的問題,所以我想了一下,這是一種解決方式,當然在sql server中使用storedproced來用迴圈方式,也是解決的方法之一!
看本篇文章之前,請先看過[SSIS-轉檔中如何抓出pk重覆的資料]這篇文章..,看這篇時才會比較了解在說什麼
這次的範例是直接更新資料,而不是要抓出重覆的資料是哪些
所以我只針對不一樣的地方做說明
首先先撈資料來源
oledb的資料來源,我假設資料來源的內容如下
這次會用到元件如下,oledb目的地的設定部份請先看過[SSIS-轉檔中如何抓出pk重覆的資料]這篇文章
差只差在最後一個元件不一樣,這次使用的是oledb命令
我的oledb目的地的設定如下畫面
在oledb命令設定如下,重點是sql語法中的?,也就是當資料重覆時要怎麼更新
請注意,這裡所連結的順序,要對照前一個頁籤中的”?”的順序連接哦,所以拉線時要想一下
第一次的執行結果,全部都是新增
我現在將第二資料刪掉,只留下第一筆,且cra_no是key
這樣如果新增應該就會失敗,因為發生資料重覆的現象
然後我再轉檔一次,結果如下,看到這裡,看的出來跟我第一次執行的結果哪裡不同嗎?
就是總共是2筆,但有發生一筆錯誤,而這一筆是要用來update用的
這樣第一筆就被更新了,但第二筆是新增進來的
但我要說是,在sssis轉檔中,用了這樣的方式,我所指的是oledb命令,效率是比較不好的
因為他還是要一筆一筆做,而不是大量批次的新增,所以效率上來說會比較慢,當你所要轉檔的資料越多,所需要的時間就會越長。
不過好處是可以另做處理,假如你的需求是轉檔是不管是否重覆,就是將資料更新過去的話
那就還蠻適合這樣的方法,給提問者參考看看囉!
文章標籤
全站熱搜

感謝阿德前輩分享此篇教學, 小弟試了一下,是真的可以成功運作,真是太棒了! 不過您所說的store procedure,小弟是有聽過此名詞 卻完全沒學過,這部份你對小弟有何建議呢?謝謝!
小山你好 store procedure指的是預儲程序,你可以看一下sql server的book online,裡面有教學 oracle也是有的,寫在裡面的好處是,這個程序是有快取的,執行會比較快 只是如果你是用sql server 2008的話,還可以debug你的store procedure哦,很方便 不過如果你目前還不了解什麼是store procedure,那也沒關係,可以先自行看一些範例來練習 ssis的部份就先這樣做吧,如果你的資料沒有很龐大的話,那就先這樣做也可以
感謝阿德前輩耐心的教導, 小弟去研究了一下store procedure,看來還是必須要從基礎學起才行,都看不是很懂!那小弟目前測試一個SSIS封裝是可行的,若是以後加入排程,同一個時間點,執行不同的SSIS封裝的話,會不會有什麼問題呢?謝謝!
ok 不會有什麼問題的
嗨!阿德大您好,好久不見! 小弟自從問完你這個問題後,就沒有時間去測試排程的部份 今天測試了一下,遇到了問題!我的步驟如下: 1.新增一個作業 2.新增一個步驟,封裝來源選擇檔案系統,然後選擇我已經測試完成的封裝檔 3.加入排程時間,執行 時間到了之後,卻沒有任何動靜,去看了一下作業歷程紀錄,錯誤訊息如下: "無法決定擁有者 (AGENT\Administrator) (在作業 TEST 中) 是否有伺服器存取權 (原因: 無法獲得關於 Windows NT 群組/使用者 'AGENT\Administrator' 的資訊,錯誤碼 0x534。 [SQLSTATE 42000] (錯誤 15404))" 那不知道阿德前輩您知道這是什麼問題嗎?感謝您!
請問你的sql server agent的服務的啟動是帳號是administator嗎?
呵呵!真是不好意思! 我不知道要怎麼看呢! 不知下面這兩張圖是否可以給你資訊 http://img21.imageshack.us/img21/7281/49375906.jpg http://img21.imageshack.us/img21/4214/84624484.jpg 謝謝您!
哈囉!你可以在圖2的地方,我是指http://img21.imageshack.us/img21/4214/84624484.jpg 這張圖 你選這個帳戶,然後輸入你的administrator的帳密 再試試看
阿德大!不好意思!我之前寫的封裝被我刪除掉了! 所以重做一個,就比較花時間! 那我照你說的設定,結果還是一樣耶!如圖: http://img395.imageshack.us/img395/9601/50400910.jpg 謝謝你!
嗯...這個嘛,看來要再花個時間做一下設定密碼的部份.. 你可以先參考一下下列文章 http://support.microsoft.com/kb/918760/zh-tw http://technet.microsoft.com/zh-tw/library/ms139805(SQL.90).aspx
*****
*****
阿德大~請問更新dtsx後出現放到web 網站 用.cs 去call .dtsx 環境是bit 也把runtime mode64bit 改過true 或false都會出現下列訊息: 執行 mail list 設定處理訊息: An Integration Services class cannot be found. Make sure that Integration Services is correctly installed on the computer that is running the application. Also, make sure that the 64-bit version of Integration Services is installed if you are running a 64-bit application. 感激不盡