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