真的很奇怪的錯誤。我在SSIS中有兩個獨立工作的源代碼C#腳本。基本上他們會從外部CRM來源獲取信息。ssis中的兩個C#源腳本組件導致「對象引用未設置爲對象的實例」
當他們都在同一個腳本啓用,在執行我得到的第一個腳本:
對象引用不設置到對象的實例
這工作
這不 - 它凍結了第一個腳本。
,我覺得這可能是一個緩衝的問題,但它仍然會引發錯誤之前完成第一個腳本。這兩個腳本都有獨特的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);
}
是否將代碼複製並粘貼到第一個數據流中?沒有看到代碼,很難確定失敗的原因。 – billinkc 2015-01-09 18:32:26
錯誤意味着您正嘗試訪問其值爲空的對象的屬性。在你的代碼的某個時候,有一個對象沒有被實例化。 – paqogomez 2015-01-09 18:33:25
我複製並粘貼了一些代碼和代碼,但它們並不相同。基本上只是連接字符串。我可以告訴你兩個腳本的代碼...編輯傳入。 – Arthur 2015-01-09 18:33:40