首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BIML CDCSpliter组件

BIML CDCSpliter组件
EN

Stack Overflow用户
提问于 2016-06-30 23:41:19
回答 1查看 257关注 0票数 0

以下是我的自定义CDCSplitter组件的代码

代码语言:javascript
复制
 <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="2"
                    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">
                      <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>
                        <OutputColumn Name="__$start_lsn" DataType="Binary" Length="10" />
                        <OutputColumn Name="__$operation" DataType="Int32" />
                        <OutputColumn Name="__$update_mask" DataType="Binary" Length="128" />
                        <# foreach (var column in table.Columns) { #>
                        <OutputColumn Name="<#=column.Name#>" DataType="<#=column.DataType#>" Length="<#=column.Length#>" />
                       <# } #>
                      </OutputColumns>
                      <ExternalColumns /> 
                    </OutputPath>

                    <OutputPath Name="UpdateOutput">
                      <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>
                        <OutputColumn Name="__$start_lsn" DataType="Binary" Length="10" />
                        <OutputColumn Name="__$operation" DataType="Int32" />
                        <OutputColumn Name="__$update_mask" DataType="Binary" Length="128" />
                         <# foreach (var column in table.Columns) { #>
                        <OutputColumn Name="<#=column.Name#>" DataType="<#=column.DataType#>" Length="<#=column.Length#>" />
                      <# } #>
                      </OutputColumns>
                    </OutputPath>

                    <OutputPath Name="DeleteOutput">
                      <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>
                        <OutputColumn Name="__$start_lsn" DataType="Binary" Length="10" />
                        <OutputColumn Name="__$operation" DataType="Int32" />
                        <OutputColumn Name="__$update_mask" DataType="Binary" Length="128" />
                        <# foreach (var column in table.Columns) { #>
                        <OutputColumn Name="<#=column.Name#>" DataType="<#=column.DataType#>" Length="<#=column.Length#>"/>
                       <# } #>
                      </OutputColumns>
                    </OutputPath>

                    <OutputPath Name="ErrorOutput" IsErrorOutput="true">
                      <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>
                        <OutputColumn Name="__$start_lsn" DataType="Binary" Length="10" />
                        <OutputColumn Name="__$operation" DataType="Int32" />
                        <OutputColumn Name="__$update_mask" DataType="Binary" Length="128" />
                        <# foreach (var column in table.Columns) { #>
                        <OutputColumn Name="<#=column.Name#>" DataType="<#=column.DataType#>" Length="<#=column.Length#>" />
                        <# } #>
                      </OutputColumns>
                      <ExternalColumns />
                    </OutputPath>

                  </OutputPaths>


                </CustomComponent>

此Biml代码编译时没有出错,但当我执行包时,它会抛出以下错误:

错误: 0xC0047062在DFT增量load_Source1,CDCSplitter 92: System.ArgumentException: Value不属于预期范围。在Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSBuffer100.DirectRow(Int32 hRow,Int32 lOutputID) at Attunity.SqlServer.CDCSplit.CdcSplitterComponent.ProcessInput(Int32 inputID,PipelineBuffer缓冲区)在Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput(IDTSManagedComponentWrapper100包装器,Int32 inputId,IDTSBuffer100 pDTSBuffer,IntPtr bufferWirePacket)错误: 0xC0047022在DFT增量load_Source1,SSIS.Pipeline: SSIS错误代码DTS_E_PROCESSINPUTFAILED。组件"CDCSplitter“(92)上的CDCSplitter方法在处理输入"CDCSource_Output_CDCSplitter”(94)时错误代码0x80070057失败。标识的组件从ProcessInput方法返回一个错误。错误是特定于组件的,但是错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,并提供有关故障的更多信息。

Biml专家请给出处理这一错误的建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 23:57:40

找到解决方案,如果有人面临同样的问题,我将与其他人分享。

将上述BIML代码重写为

代码语言:javascript
复制
<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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38134913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档