SSIS package 更新 variable
在Package中聲明一個variable,在package運行的過程中,SSIS如何update Variable?
第一種方法:使用 Script Task 來更新Variable的值
1,創建一個variable ,VariableName是VarCode,并將變量傳遞到腳本的ReadWriteVariables數組中。
2,在C#腳本中,SSIS提供兩種方式訪問變量,第一種方式比較簡單,推薦使用。
//讀寫變量 第一種方式string VarName = this.Dts.Variables["User::VarName"].Value.ToString();int VarCode = int.Parse(this.Dts.Variables["User::VarCode"].Value.ToString());this.Dts.Variables["User::VarCode"].Value = 2;//讀寫變量 第二種方式 this.Dts.VariableDispenser.LockForRead("User::VarName");this.Dts.VariableDispenser.LockForWrite("User::VarCode");Variables vars=null;this.Dts.VariableDispenser.GetVariables(ref vars);string strName = vars["User::VarName"].Value.ToString();int iCode = int.Parse(vars["User::VarCode"].Value.ToString());vars["User::VarCode"].Value = 3;vars.Unlock();第二種方法:使用 Script? Component 來更新Variable的值
?1,創建變量
2,將變量傳遞到Script component中
3,使用C#腳本引用變量,在script component中引用變量有兩種方式
3.1 使用變量名作為來引用變量
int code = this.Variables.VarCode;//string name = this.Variables.VarName;//this.Variables.VarName = "New VarName";在引用ReadWrite類型的變量時,可能會發生異常“在PostExecute之外不能鎖定變量集合進行讀寫訪問”,就是說,不能在PostExecute函數之外通過這種方式引用ReadWrite類型的變量,如果發生這種異常,只需要將引用ReadWrite類型的變量的代碼放到PostExecute中就不會出錯了。
3.2使用加鎖方式來引用變量,這種方式能在PostExecute函數之外引用ReadWrite類型的變量
this.VariableDispenser.LockForRead("User::VarCode");this.VariableDispenser.LockForWrite("User::VarName"); IDTSVariables100 vars = null; this.VariableDispenser.GetVariables(out vars); int iCode = int.Parse(vars["User::VarCode"].Value.ToString()); string strName = vars["User::VarName"].Value.ToString(); vars["User::VarName"].Value = "New VarName"; vars.Unlock();第三種方法:通過Execute Sql Task 為變量賦值,通過Sql語句返回單行結果集,將結果集更新到接收數據的變量上。
Result Set屬性:選擇 Single Row
Sql Statement: 輸入要賦值的sql語句 ?select 'ExecSqlCmd task' as Name, 2 as Code
Result Set選項卡:設置輸出的單行結果和變量之間的映射關系
?
第四種方法:通過Execute Sql Task 為變量賦值,使用Sql賦值語句,將結果集更新到接收數據的變量上。
sql賦值語句主要有兩種,select和set
declare @id intselect @id=1 set @id=1創建Package變量
配置Execute Sql Task的屬性
Result Set屬性:選擇 None
Sql Statement: 輸入sql賦值語句 ?select ?='ExecSqlCmd task'
在Parameter mapping中配置Direction為Output
?
第五種方法:使用Expression Task為變量賦值
?
在Expression中輸入賦值的Expression。
?
第六種方法:為變量設置初始值,在創建變量的Variables窗體中,在Value輸入的值就是變量的初始值,也可以在Expression中,使用Expression為變量賦值
?
?
作者:悅光陰 出處:http://www.cnblogs.com/ljhdo/ 本文版權歸作者和博客園所有,歡迎轉載,但未經作者同意,必須保留此段聲明,且在文章頁面醒目位置顯示原文連接,否則保留追究法律責任的權利。 分類: SSIS 組件本文轉自悅光陰博客園博客,原文鏈接:http://www.cnblogs.com/ljhdo/p/4498149.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的SSIS package 更新 variable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下A免密码登录B
- 下一篇: 0408~送给小伙伴的汉堡包