私は2つのデータベースを持っています。ソースデータベース: http ://sdrv.ms/VkX8tj
およびスターデータベース: http ://sdrv.ms/12S7Zkc
SSISプロジェクトを使用して1番目から2番目にデータを転送しています:sdrv.ms/YDUvU4
(3番目のリンクを投稿できません。ご不便をおかけして申し訳ありません)
ご覧のとおり、スクリプトにエラーがあります。「列にNULL値があります」と表示されます。または正確には(ポップアップウィンドウによって):
Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer.CheckStatusAndNull(Int32 columnIndex)at Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer.GetDecimal(Int32 columnIndex)at ScriptMain.Input0_ProcessInputRow(Input0Buffer Row)at UserComponent.Input0_ProcessInput(Input0Buffer Buffer)at Microsoft .SqlServer.Dts.Pipeline.ScriptComponent.ProcessInput(Int32 InputID、PipelineBuffer buffer)at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID、PipelineBuffer buffer)
および(デバッガーの出力による):
エラー:0xC0047062、データフロータスク、スクリプトコンポーネント[337]:Microsoft.SqlServer.Dts.Pipeline.ColumnIsNullException:列にnull値があります。Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e)at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID、PipelineBuffer buffer)at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput(IDTSManagedComponentWrapper100ラッパー、Int32 inputID、IDTSBuffer100 pDTSBuffer、IntPtr bufferWirePacket)エラー:0xC0047022、データフロータスク、SSIS.Pipeline:SSISエラーコードDTS_E_PROCESSINPUTFAILED。コンポーネント「スクリプトコンポーネント」(337)のProcessInputメソッドは、入力「入力0」(347)の処理中にエラーコード0x80131600で失敗しました。識別されたコンポーネントは、ProcessInputメソッドからエラーを返しました。エラーはコンポーネントに固有ですが、エラーは致命的であり、データフロータスクの実行を停止します。この前に、障害に関する詳細情報を含むエラーメッセージが投稿される場合があります。
私のスクリプトは、次の1つの関数に入力することを除いて、テンプレートとまったく同じです。
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
decimal WorkerWage = Row.Amount * Row.HourWage * Row.ProductionHours;
Row.WorkerWage = WorkerWage;
decimal TotalProductionCost = Row.Amount * Row.ProductionHours * (Row.ProductionCost + Row.HourCost) + WorkerWage;
Row.TotalProductionCost = TotalProductionCost;
decimal StandardPrice = TotalProductionCost * (1 + Row.Profit/100);
Row.StandardPrice = StandardPrice;
decimal TotalDiscount = StandardPrice * (Row.Discount / 100);
Row.TotalDiscount = TotalDiscount;
decimal TotalPrice = StandardPrice - TotalDiscount;
Row.TotalPrice = TotalPrice;
decimal TotalShippingCost = Row.ShippingCost + TotalPrice * (Row.ShippingTax / 100);
Row.TotalShippingCost = TotalShippingCost;
decimal RealProfit = TotalPrice - TotalProductionCost;
Row.RealProfit = RealProfit;
decimal TraderMargin = RealProfit * (Row.ProfitMargin / 100);
Row.TraderMargin = TraderMargin;
}
「列にnull値がある」とは何かを意味しますが、それは入力列ですか、それとも出力列ですか。正確にはどちらですか。それを理解する方法は?
ちなみに、このプロジェクトは教育目的でのみ行われているので(まあ、行われることを願っています)、このプロジェクトのコンテンツベースの価値に注意を払わないでください。