一般我們使用ssis都是用”資料流程工作”做批次新增或使用”執行sql 工作”來執行單一命令或procedure,除非情況不得以,需要使用”指令碼工作”來寫程式轉資料,但其實個人覺得,各有各的優缺點…

那如果真的非不得以,要用到”指令碼工作”,來寫資料到資料庫,那重點就是怎麼在script中連線了…

以下的教學就是主講這段..

所使用工具

ssis2008

首先拉一個”指令碼工作”

image


在指令碼工作上按滑鼠右鍵,選編輯,出現如下視窗,在ssis2008中,終於有支援以c#來寫程式碼了,所以這次我選c#,選好之後,點”編輯指令碼”的按鈕

image


之後開啟程式碼編輯視窗,請在main這個function中,輸入下列程式碼

image


以下為範例程式碼


           ConnectionManager cm = Dts.Connections["sybase_odbc"];
           IDTSConnectionManagerDatabaseParameters100 cmParams = cm.InnerObject as IDTSConnectionManagerDatabaseParameters100;
           OdbcConnection conn = cmParams.GetConnectionForSchema() as OdbcConnection;
           OdbcCommand cmd = new OdbcCommand("insert into collectorder(orderno,prod) values(3,'台')", conn);
           cmd.ExecuteNonQuery();


 

“sybase_odbc”指的是你在image 所設的名稱,這裡一樣不能使用sybase_oledb,不然會出現跟[SSIS-使用oledb方式新增資料到sybase時會出現univarchar認不得的解決方法]這篇一樣的錯誤哦..

 

再來重點是IDTSConnectionManagerDatabaseParameters100這個interface,一開始並沒有參考到,所以如果你把我的程式碼copy去用的話,這一行會出現紅色的毛毛蟲(不是真的蟲啦,就…寫程式的術語..)

我們要再參考一個.net的dll

在專案視窗中的”參考”,按滑鼠右鍵,選加入參考

image

然後會經過一小時喝咖啡時間(電腦效能較弱的人,會等一段時間啦…)



會出現一個視窗,找到Microsoft.SQLServer.DTSRuntimeWrap這個dll

image

加入後,記得要using,不然還是沒效

image


做完以上的動作後,你的程式碼就不會出現紅色的毛毛蟲了

ok,到這裡就算是結束了,來執行看看吧

出現ok囉!代表成功了

image

看看寫入的資料是否正確

image

ok啦~完成,打包收工… 81.gif

arrow
arrow
    全站熱搜

    丫德 發表在 痞客邦 留言(1) 人氣()