Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis BIML:无法将DerivedColumn输出绑定到ADO.Net目标(简单查询)_Ssis_Biml - Fatal编程技术网

Ssis BIML:无法将DerivedColumn输出绑定到ADO.Net目标(简单查询)

Ssis BIML:无法将DerivedColumn输出绑定到ADO.Net目标(简单查询),ssis,biml,Ssis,Biml,Biml在对程序包进行评级时会引发下一个异常: EmitSsis。内部编译器错误:工作流EmitSsis包含致命错误。阶段执行已停止。要获得帮助,请将Biml编译器错误消息发送到support@varigence.com.有关详细信息,请参阅其他错误。异常类型:NullReferenceException“我想这是由下一个原因引起的:我试图将DerivedColumn.Output绑定到ADO.Net目标,并且它的输出等于NULL。当我删除块“DerivedColumn”和目标输入绑定源输出时,

Biml在对程序包进行评级时会引发下一个异常:
EmitSsis。内部编译器错误:工作流EmitSsis包含致命错误。阶段执行已停止。要获得帮助,请将Biml编译器错误消息发送到support@varigence.com.有关详细信息,请参阅其他错误。异常类型:NullReferenceException“
我想这是由下一个原因引起的:我试图将DerivedColumn.Output绑定到ADO.Net目标,并且它的输出等于NULL。当我删除块“DerivedColumn”和目标输入绑定源输出时,我想是这样的,一切正常。
如何将DerivedColumn的输出正确绑定到目标?
这是Biml代码的一部分

<AdoNetSource Name="CompletionCertificate Source" ConnectionName="Connection1"> <DirectInput> there an SQL query SELECT</DirectInput> </AdoNetSource> <DerivedColumns Name="Derived1"> <InputPath OutputPathName="CompletionCertificate Source.Output"/> <Columns> <Column Name="IsOpeningBalanceStr" SsisDataTypeOverride="DT_BOOL" DataType="String" Length="150">TRIM(IsOpeningBalanceStr) == "1"< /Column> </Columns> </DerivedColumns> <AdoNetDestination Name="CompletionCertificate Destination" ConnectionName="Database (ADO.Net)"> <InputPath OutputPathName="CompletionCertificate.Output"/> <ExternalTableOutput Table="Schema.Table"/> <Columns> <Column ... <Column ... <Column ... <Columns/> </AdoNetDestination > </Transformations> </Dataflow> </Tasks> </Package> </Packages> </Biml> 这里有一个SQL查询选择 修剪(等边LanceStr)=“1”
目标组件没有输出路径,只有错误。无法将派生列连接到任何目标组件的SSIS设计器中的输出路径。这就是Biml失败的原因——你尝试做的事情没有模拟

我在代码中看到的另一个问题是,您正在为输入路径引用一个无效的源

<AdoNetDestination Name="CompletionCertificate Destination" ConnectionName="Database (ADO.Net)">
    <InputPath OutputPathName="CompletionCertificate.Output"/>

此外,由于Biml是一种按约定类型的语言,默认情况下是按照声明的顺序连接事物。这意味着在提供的(源->派生列->目标)中,您不需要指定任何路径,因为没有要处理的分支。

我找到了一段代码,在其中键入了miscorrect。首先,我发布了带有以下错误的源代码,告诉@billinkc:

<AdoNetDestination Name="CompletionCertificate Destination"> <ConnectionName="Database (ADO.Net)"> <InputPath OutputPathName="CompletionCertificate.Output"/>
将从DerivedColumn输出中查找的属性
名称
(IsOpeningBalanceStr)与输入值具有相同的名称。这是不对的。我弄错了它的意思(认为这是输入列的名称,而不是输出)
因此,您应该定义一个属性
Name
值,该值不同于输入列
Name
。或者您应该使用其他列参数键入ReplaceExisting=“true”。就像这样:

TRIM(IsOpeningBalanceStr)=“1”

您是试图将派生列从目标添加到“常规”输出路径,还是错误的“常规”输出路径。有
,没有
Derived1。ErrorOutput
。是的,那么我不定义目标的任何输出路径。只有目标的
输入路径
。我找到了它这样做的原因。看看我的答案,@billinkc。 <AdoNetDestination Name="CompletionCertificate Destination"> <ConnectionName="Database (ADO.Net)"> <InputPath OutputPathName="CompletionCertificate.Output"/> <Column Name="IsOpeningBalanceStr" SsisDataTypeOverride="DT_BOOL" DataType="String" Length="150"> TRIM(IsOpeningBalanceStr) == "1"</Column>