2017-10-19 25 views
0

我几乎准备了BIML文件,但我还有一个问题转换合并连接成BIML - 需要NumKeyColumns改为1

我试图把标准合并加入到BIML 和99级%的作品,和该组件生成和DTSX制作,但 我不能设置numKeyColumns值随时随地

<properties> 
      <property dataType="System.Int32" description="Specifies the type of join to perform." name="JoinType" typeConverter="JoinType">0</property> 
      <property dataType="System.Int32" description="Specifies the number of columns in the ordering key." name="NumKeyColumns">0</property> 
      <property dataType="System.Boolean" description="Indicates whether the null values are treated as equal values." name="TreatNullsAsEqual">true</property> 
      <property dataType="System.Int32" description="Indicates the requested maximum buffers per input before blocking." name="MaxBuffersPerInput">5</property> 
      </properties> 

我可以设置jointype 但是,当产生DTSX将在0填补我找不到NumKeyColumns 但是是必须是1

这是BIML合并连接(不传入的连接)

  <MergeJoin Name="Merge Join" JoinType="FullOuterJoin"> 
      <LeftInputPath OutputPathName="Source.Output"> 
      <Columns> 
       <Column SourceColumn="BK" IsUsed="true" SortKeyPosition="1" TargetColumn="sBK" /> 
       <Column SourceColumn="hbSource" IsUsed="true" /> 
      </Columns> 
      </LeftInputPath> 
      <RightInputPath OutputPathName="Dwh Destination.Output"> 
      <Columns> 
       <Column SourceColumn="BK" IsUsed="true" TargetColumn="dBK" /> 
       <Column SourceColumn="hbDestination" IsUsed="true" /> 
      </Columns> 
      </RightInputPath> 
     </MergeJoin> 

任何帮助是极大的赞赏

回答

0

我觉得你失踪了MergeJoin的JoinKey属性。添加它可以释放一个语法正确的SSIS包。不管它在逻辑上是否正确都是另一回事;)

让我知道如果这不是你想要做的。乐于帮助,爱Biml。

<Biml xmlns="http://schemas.varigence.com/biml.xsd"> 
    <Connections> 
     <OleDbConnection Name="SRC" ConnectionString="Provider=SQLNCLI11;Server=localhost\dev2016;Initial Catalog=tempdb;Integrated Security=SSPI;" /> 
    </Connections> 
    <Packages> 
     <Package Name="MergeJoin"> 
      <Tasks> 
       <Dataflow Name="DFT Demo"> 
        <Transformations> 
         <OleDbSource Name="Source" ConnectionName="SRC"> 
          <Columns> 
           <Column SourceColumn="BK" SortKeyPosition="1" /> 
          </Columns> 
          <DirectInput>SELECT 1 AS BK, 'foo' AS hbSource UNION SELECT 2, 'ick' order by 1;</DirectInput> 
         </OleDbSource> 
         <OleDbSource Name="Dwh Destination" ConnectionName="SRC"> 
          <Columns> 
           <Column SourceColumn="BK" SortKeyPosition="1" /> 
          </Columns> 
          <DirectInput>SELECT 1 AS BK, 'foo' AS hbDestination UNION SELECT 3, 'zoo' order by 1;</DirectInput> 
         </OleDbSource> 
         <MergeJoin Name="Merge Join" JoinType="FullOuterJoin"> 
          <LeftInputPath OutputPathName="Source.Output"> 
           <Columns> 
            <Column SourceColumn="BK" IsUsed="true" SortKeyPosition="1" TargetColumn="sBK" /> 
            <Column SourceColumn="hbSource" IsUsed="true" /> 
           </Columns> 
          </LeftInputPath> 
          <RightInputPath OutputPathName="Dwh Destination.Output"> 
           <Columns> 
            <Column SourceColumn="BK" IsUsed="true" TargetColumn="dBK" /> 
            <Column SourceColumn="hbDestination" IsUsed="true" /> 
           </Columns> 
          </RightInputPath> 
          <JoinKeys> 
           <JoinKey LeftColumn="BK" RightColumn="BK" /> 
          </JoinKeys> 
         </MergeJoin> 
        </Transformations> 
       </Dataflow> 
      </Tasks> 
     </Package> 
    </Packages> 
</Biml> 
+1

你做到了! 是的,我错过了(我想我补充说,但也许在另一个测试版本) 我测试了2次,看看它是否真的工作,是的它做到了! 谢谢,我也爱喝茶:-) – John