實現目標的步驟

需要 SSIS 任務。

  1. 資料流任務: 由於指令碼元件僅在資料流中可用。
  2. 指令碼元件: 在此我們將使用變數並使用其中的值。

腳步

有兩種方法可以訪問指令碼元件中的變數

第一種方法 - 使用 this.Variables

  1. 建立兩個使用者變數 Result(String),UserVar(String value:UserVar),還建立一個包引數 PackageVar(String value:PackageVariable)和一個專案引數 ProjectParam(String value:ProjectParameter)。
  2. 收藏夾部分下的“SSIS 工具箱”中拖放資料流任務StackOverflow 文件
  3. 雙擊資料流任務,它將帶你進入資料流。現在,從 SSIS 工具箱中拖放 “ 公共” 部分下的“ 指令碼元件” 。它會提示視窗有三個選擇 Source,Destination 和 Transformation。選擇 Source 並單擊 OK。 ** StackOverflow 文件
  4. 雙擊指令碼元件,在右側為 ReadOnlyVariables 單擊三個點,它將開啟一個 Select Variable 視窗。現在選擇 User::UserVar,$ Package::PackageVar 和$ Project::ProjectParm。單擊確定。同樣單擊與 ReadWriteVariables 對應的三個點,然後選擇 User::Result。單擊確定。 StackOverflow 文件
  5. 在指令碼轉換編輯器的左側選擇輸入和輸出,在中心展開輸出 O - >展開底部的輸出列單擊新增列。當我們使用指令碼元件作為 Source 時,它需要有輸出列,這就是我們建立此輸出列的原因。 StackOverflow 文件
  6. 在左側單擊指令碼,在編輯器的右下角單擊編輯指令碼,它將開啟一個新視窗,在此視窗中找到 PostExecute() 方法並通過此寫入 this.Variables.Result = this.Variables.UserVar + this.Variables.PackageVar + this.Variables.ProjectParm;。變數我們正在訪問變數。單擊 Ctrl + S 儲存並關閉視窗。單擊確定。 StackOverflow 文件
  7. 轉到控制流並右鍵單擊“ *資料流任務”,*然後選擇“ 編輯斷點” 。現在,在新的 Set Breakpoints 視窗中,當容器收到 OnPostExecute 事件時,選擇 Break 。單擊確定。 StackOverflow 文件
  8. 現在,在*解決方案資源管理器中,*右鍵單擊包名稱,然後單擊執行包。從選單欄中單擊 Debug - > Windows - > Watch - > Watch 1.現在底部的 Watch 視窗將可見。在名稱下鍵入 User::Result,然後單擊 Enter。在下可以看到連線值{UserVarPackageVariableProjectParameter}。 StackOverflow 文件

第二種方法 - 使用 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;

}