實現目標的步驟
需要 SSIS 任務。
- 資料流任務: 由於指令碼元件僅在資料流中可用。
- 指令碼元件: 在此我們將使用變數並使用其中的值。
腳步
有兩種方法可以訪問指令碼元件中的變數
第一種方法 - 使用 this.Variables
- 建立兩個使用者變數
Result(String)
,UserVar(String value:UserVar),還建立一個包引數 PackageVar(String value:PackageVariable)和一個專案引數 ProjectParam(String value:ProjectParameter)。 - 從收藏夾部分下的“SSIS 工具箱”中拖放資料流任務。
- 雙擊資料流任務,它將帶你進入資料流。現在,從 SSIS 工具箱中拖放 “ 公共” 部分下的“ 指令碼元件” 。它會提示視窗有三個選擇 Source,Destination 和 Transformation。選擇 Source 並單擊 OK。 **
- 雙擊指令碼元件,在右側為 ReadOnlyVariables 單擊三個點,它將開啟一個 Select Variable 視窗。現在選擇 User::UserVar,$ Package::PackageVar 和$ Project::ProjectParm。單擊確定。同樣單擊與 ReadWriteVariables 對應的三個點,然後選擇 User::Result。單擊確定。
- 在指令碼轉換編輯器的左側選擇輸入和輸出,在中心展開輸出 O - >展開底部的輸出列單擊新增列。當我們使用指令碼元件作為 Source 時,它需要有輸出列,這就是我們建立此輸出列的原因。
- 在左側單擊指令碼,在編輯器的右下角單擊編輯指令碼,它將開啟一個新視窗,在此視窗中找到
PostExecute()
方法並通過此寫入this.Variables.Result = this.Variables.UserVar + this.Variables.PackageVar + this.Variables.ProjectParm;
。變數我們正在訪問變數。單擊 Ctrl + S 儲存並關閉視窗。單擊確定。 - 轉到控制流並右鍵單擊“ *資料流任務”,*然後選擇“ 編輯斷點” 。現在,在新的 Set Breakpoints 視窗中,當容器收到 OnPostExecute 事件時,選擇 Break 。單擊確定。
- 現在,在*解決方案資源管理器中,*右鍵單擊包名稱,然後單擊執行包。從選單欄中單擊 Debug - > Windows - > Watch - > Watch 1.現在底部的 Watch 視窗將可見。在名稱下鍵入 User::Result,然後單擊 Enter。在值下可以看到連線值{UserVarPackageVariableProjectParameter}。
第二種方法 - 使用 VariableDispenser
當使用可變分配器時,將變數新增到 ReadOnlyVariables
並且不需要 ReadWriteVariables
。你可以使用以下程式碼來讀取和寫入變數值:( 程式碼適用於 ssis 2008)
寫
private void WriteVariable(String varName, Object varValue)
{
IDTSVariables100 vars = null;
VariableDispenser.LockForWrite(varName);
VariableDispenser.GetVariables(out vars);
vars[varName].Value = varValue;
vars.Unlock();
}
讀
private Object ReadVariable(String varName)
{
Object varValue;
IDTSVariables100 vars = null;
VariableDispenser.LockForRead(varName);
VariableDispenser.GetVariables(out vars);
varValue = vars[varName].Value;
vars.Unlock();
return varValue;
}