Search code examples
ssis-2012cdcbiml

BIML CDCSplitter component


I am getting the an error in CDCSplitter which is created using BIML code , I am new to SSIS and BIML. The error I am getting is

Error: 0xC0047062 at DFT Incremental load_Source1, CDCSplitter [92]: System.ArgumentException: Value does not fall within the expected range. at Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSBuffer100.DirectRow(Int32 hRow, Int32 lOutputID) at Attunity.SqlServer.CDCSplit.CdcSplitterComponent.ProcessInput(Int32 inputId, PipelineBuffer buffer) at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput(IDTSManagedComponentWrapper100 wrapper, Int32 inputID, IDTSBuffer100 pDTSBuffer, IntPtr bufferWirePacket)


Solution

  • Found the solution,I am sharing for others if anyone face the same problem

    Rewrite the above BIML code to

    <CustomComponent Name="CDCSplitter"
                        ComponentClassId="{874F7595-FB5F-40FF-96AF-FBFF8250E3EF}"
                        ComponentTypeName="Attunity.SqlServer.CDCSplit.CdcSplitterComponent, Attunity.SqlServer.CDCSplit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=aa342389a732e31c"
                        ContactInfo="Attunity Ltd.; All Rights Reserved; http://www.attunity.com;"
                        UsesDispositions="true"
                        Version="1"
                        ValidateExternalMetadata="false">
                      <Annotations>
                        <Annotation AnnotationType="Description">Directs a stream of net change records into different outputs based on the type of the change (Insert, Delete and Update). This allows specific handling for different types of change records.</Annotation>
                      </Annotations>
                      <InputPaths>
                        <InputPath Identifier="Input" OutputPathName="CDCSource.Output" >
                          <InputColumns>
                            <InputColumn SourceColumn="__$start_lsn"  />
                            <InputColumn SourceColumn="__$operation"   />
                            <InputColumn SourceColumn="__$update_mask" />
                             <# foreach (var column in table.Columns) { #>
                            <InputColumn SourceColumn="<#=column.Name#>"  />
                           <# } #>
                          </InputColumns>
                        </InputPath>
                      </InputPaths>
                      <OutputPaths>
                        <OutputPath Name="InsertOutput" SynchronousInput="Input" ExclusionGroup="1">
                          <Annotations>
                            <Annotation AnnotationType="Description">Output type - Insert.</Annotation>
                          </Annotations>
                          <CustomProperties>
                            <CustomProperty Name="OutputType" DataType="Int32"
                                            TypeConverter="Attunity.SqlServer.CDCSplit.OutputType, Attunity.SqlServer.CDCSplit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=aa342389a732e31c"
                                        >0</CustomProperty>
                          </CustomProperties>
                          <OutputColumns>
                          
                          </OutputColumns>
                          <ExternalColumns /> 
                        </OutputPath>
    
                        <OutputPath Name="UpdateOutput" SynchronousInput="Input" ExclusionGroup="1">
                          <Annotations>
                            <Annotation AnnotationType="Description">Output type - Update.</Annotation>
                          </Annotations>
                          <CustomProperties>
                            <CustomProperty Name="OutputType" DataType="Int32"
                                            TypeConverter="Attunity.SqlServer.CDCSplit.OutputType, Attunity.SqlServer.CDCSplit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=aa342389a732e31c"
                                        >1</CustomProperty>
                          </CustomProperties>
                           <OutputColumns>
                           
                          </OutputColumns>
                        </OutputPath>
    
                        <OutputPath Name="DeleteOutput" SynchronousInput="Input" ExclusionGroup="1">
                          <Annotations>
                            <Annotation AnnotationType="Description">Output type - Delete.</Annotation>
                          </Annotations>
                          <CustomProperties>
                            <CustomProperty Name="OutputType" DataType="Int32"
                                            TypeConverter="Attunity.SqlServer.CDCSplit.OutputType, Attunity.SqlServer.CDCSplit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=aa342389a732e31c"
                                        >2</CustomProperty>
                          </CustomProperties>
                            <OutputColumns>
                          
                          </OutputColumns>
                        </OutputPath>
    
                        <OutputPath Name="ErrorOutput" IsErrorOutput="true"  SynchronousInput="Input" ExclusionGroup="1">
                          <Annotations>
                            <Annotation AnnotationType="Description">Output type - Error.</Annotation>
                          </Annotations>
                          <CustomProperties>
                            <CustomProperty Name="OutputType" DataType="Int32"
                                            TypeConverter="Attunity.SqlServer.CDCSplit.OutputType, Attunity.SqlServer.CDCSplit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=aa342389a732e31c"
                                        >3</CustomProperty>
                          </CustomProperties>
                           <OutputColumns>
                          
                          </OutputColumns>
                          <ExternalColumns />
                        </OutputPath>
    
                      </OutputPaths>
    
    
                    </CustomComponent>