単一の入力列を調べ、各行の値に応じてbool型の出力列を作成する単純なカスタムSSISコンポーネントを作成しようとしています。メソッドが見つかりませんカスタムSSISコンポーネントのSetDataTypeProperties
私は値をとり、それを変換するより簡単なコンポーネントを構築しました。これは、出力列での操作を必要としません。この例では、文字列を取り込んでブール値を出力する必要があり、コンポーネントはブール値を出力することを知る必要があるため、値を条件付き分割に渡すことができます。
出力列を追加しようとしています。
public override DTSValidationStatus Validate()
{
IDTSOutput100 output = ComponentMetaData.OutputCollection[0];
IDTSOutputColumn100 outputcol = output.OutputColumnCollection.New();
outputcol.Name = "IsValid";
outputcol.SetDataTypeProperties(DataType.DT_BOOL, 0, 0, 0, 0);
return DTSValidationStatus.VS_ISVALID;
}
そして私はProcessInputのステップの間にそれを移入しようとすると::
public override void ProcessInput(int inputID, PipelineBuffer buffer)
{
while (buffer.NextRow())
{
string str = buffer.GetString(0);
buffer.SetBoolean(0, IsValid(str)); // validation code not relevant
}
}
私はパッケージに、このコンポーネントを使用しようとすると、私はこのエラーを取得するcode samples from Microsoftに基づいて、私はこれを行っています:
The component has detected potential metadata corruption during validation.
Error at Data Flow Task [Uppercase [24]]: System.MissingMethodException: Method not found: 'Void Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSOutputColumn100.SetDataTypeProperties(Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType, Int32, Int32, Int32, Int32)'.
at EmailValidation.Uppercase.Validate()
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostValidate(IDTSManagedComponentWrapper100 wrapper)
このエラーメッセージを検索しても何も価値がありません。
元のサンプルとオンラインのその他のチュートリアルでは、出力列の追加は、入力列をループし、それぞれに追加の出力を追加することで行われます。私はこれを試して、同じエラーを取得します。
また、出力列コードをValidate
からOnInputPathAttached
に移動しようとしましたが、それでも同じエラーが発生します。
私は間違っていますか?
使用しているSSISのバージョンは何ですか? – mallan1121
@ mallan1121見ていただきありがとうございます。それはパイプラインフォルダの120であるSQL 2014です –
あなたのアセンブリに 'Microsoft.SqlServer.Dts.Pipeline.Wrapper'コンポーネントへの参照がありますか?エラーが発生しているコンピュータで使用できますか?エラーは、Microsoft.SqlServer.Dts.Runtime.Wrapperアセンブリでメソッドを見つけることができないというエラーです。 – Ferdipux