2015-01-09 46 views
2

真的很奇怪的錯誤。我在SSIS中有兩個獨立工作的源代碼C#腳本。基本上他們會從外部CRM來源獲取信息。ssis中的兩個C#源腳本組件導致「對象引用未設置爲對象的實例」

當他們都在同一個腳本啓用,在執行我得到的第一個腳本:

對象引用不設置到對象的實例

這工作

http://i.imgur.com/dz6fi2o.png

這不 - 它凍結了第一個腳本。

http://i.imgur.com/Kgvi51a.png

,我覺得這可能是一個緩衝的問題,但它仍然會引發錯誤之前完成第一個腳本。這兩個腳本都有獨特的ID和GUID。

調試是無用的,它不會停止在我編程的任何代碼上。我很難過。

這是ScriptThree.CreateNewOutputRows() - 重要的是要注意scriptthree是第二個數據流任務的一部分。

public override void CreateNewOutputRows() 
{ 
    /* 
     Add rows by calling the AddRow method on the member variable named "<Output Name>Buffer". 
     For example, call MyOutputBuffer.AddRow() if your output was named "MyOutput". 
    */ 

    QueryExpression query = new QueryExpression("email") 
    { 
     ColumnSet = new ColumnSet(new string[] { "subject", "regardingobjectid", "createdon", "directioncode" }), 
     PageInfo = new PagingInfo() 
     { 
      Count = 250, 
      PageNumber = 1, 
      ReturnTotalRecordCount = false 
     } 
    }; 

    EntityCollection results = null; 

    do 
    { 
     results = organizationservice.RetrieveMultiple(query); 

     foreach (Entity record in results.Entities) 
     { 
      emailBuffer.AddRow(); 

      emailBuffer.emailid = record.Id; 

      if (record.Contains("subject")) 
       emailBuffer.subject = record.GetAttributeValue<string>("subject"); 
      if (record.Contains("regardingobjectid")) 
       emailBuffer.regarding = record.GetAttributeValue<EntityReference>("regardingobjectid").Id; 
      if (record.Contains("createdon")) 
       emailBuffer.createdon = record.GetAttributeValue<DateTime>("createdon"); 
      if (record.Contains("directioncode")) 
       emailBuffer.directioncode = record.GetAttributeValue<bool>("directioncode"); 

     } 
     query.PageInfo.PageNumber++; 
     query.PageInfo.PagingCookie = results.PagingCookie; 
    }   
    while (results.MoreRecords); 
} 
+1

是否將代碼複製並粘貼到第一個數據流中?沒有看到代碼,很難確定失敗的原因。 – billinkc 2015-01-09 18:32:26

+0

錯誤意味着您正嘗試訪問其值爲空的對象的屬性。在你的代碼的某個時候,有一個對象沒有被實例化。 – paqogomez 2015-01-09 18:33:25

+0

我複製並粘貼了一些代碼和代碼,但它們並不相同。基本上只是連接字符串。我可以告訴你兩個腳本的代碼...編輯傳入。 – Arthur 2015-01-09 18:33:40

回答

0

我仍然不知道確切的原因是什麼,但我複製並粘貼我的劇本到一個新的腳本對象,它突然又開始工作。

0

我想,你複製並粘貼了整個腳本組件,然後修改了第二個代碼,所以你有兩個腳本組件具有相同的ComponentScriptId。這就是爲什麼增加一個新的解決了這個問題。

相關問題