公告版位
哈囉,丫德我會常常更新一些工作上的心情記事及資訊科技新知與大家分享...

一般我們使用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

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


留言列表 (1)

發表留言
  • Charlse
  • DEAR 板大:
    請教一下 此方法一定要先設定ODBC連線才能成功嗎?
    有無接直接使用System.SQL.Client底下的函式的方法
    thanks~!
  • 你如果是用sql server當然就是引用sqlclinet
    只是你要建立一個.net provider的共用連線(連到sql server)
    這個連線是為了要在指令碼介面撰寫程式時會要用到的,在指令碼元件中是不吃原生provider的連線
    這點要注意

    丫德 於 2013/07/24 09:40 回覆