2012-05-02 22 views
1

我在變量中使用創建數據集的記錄集目標。 稍後在腳本組件(源代碼)中使用變量只讀,但是當我嘗試在其他腳本組件(源代碼)中使用此變量時,將獲取空數據集。我認爲第一個腳本組件阻塞了我的變量,不明白如何修復它。如何在SSIS包中使用兩次可變數據集

VariableDispenser variableDispenser = (VariableDispenser)this.VariableDispenser; 
     variableDispenser.LockForRead("User::dsOrganization"); 
     IDTSVariables100 vars; 
     variableDispenser.GetVariables(out vars); 

     OleDbDataAdapter oleDA = new OleDbDataAdapter(); 
     DataTable dt = new DataTable(); 
     var ds = vars["User::dsOrganization"].Value; 
     oleDA.Fill(dt, ds); 
     foreach (DataRow dr in dt.Rows) 
     { 
      Output0Buffer.AddRow(); 
      Output0Buffer.Organization = dr["Organization"].ToString(); 
      Output0Buffer.OrganizationCode = dr["OrganizationCode"].ToString(); 
      Output0Buffer.SPOrganizationCode = dr["SPOrganizationCode"].ToString(); 
      Output0Buffer.SPOrganizationMember = dr["SPOrganizationMember"].ToString(); 
     } 
     vars.Unlock(); 

兩個腳本組件使用相同的代碼第一個組件獲得44排第二 - 沒有

如果改變腳本組件腳本任務一切工作的權利。

+0

郵政編碼 - 沒有它我們不可能找出辦法。 –

回答

1

問題是,當您嘗試第二次循環訪問時,枚舉器的指針位於記錄集的末尾。在將它加載到數據集之前,請嘗試克隆您的記錄集。

但是,應該避免將大數據集加載到變量中。嘗試評估和優化流程的設計。