2

I have a problem with flow in SSIS package. For increasing the performance I have generally the same logic for importing data from MS Access files into SQL Server Database:

  • 1st Task - try to bulk insert data (Table or View - fast load)
  • If there was a failure (e.g. constraint violation), the whole bunch of records is passed to next task - normal insert (Table View)
  • all problem records are passed to next steps for loggin into flat files (txt)

The problem I face is that even when the first insert went fine, I still reach the failure flow and an empty error log file is created all the time. In my understanding the process should reach this point only in case there were problems before.

For better understanding I attach image with execution results and there are green ticks up to the end.

Would appreciate any advice for workaround. What I need is to create error log files - only when there was any error with details about the problem.

Thanks!

Wrong flow in SSIS package

4

1 に答える 1

0

データフローと制御フローをある程度混同していると思います。

StockExchange - データフローからレコードを受け取る可能性があるため、エラー ログが作成されます。

これを回避する方法は次のとおりです。

1) 一時エラー ログ ファイルを作成して、失敗した行を一時的に保持するか、一時的な場所に成功した場合は行をゼロにします。

2) 「StockExchange - Get Error Desc」コンポーネントの後に行数コンポーネントを追加し、iErrorCount などの変数に割り当てます。

3) 制御フローで、データ フローの後に 2 つの優先順位制約を追加します。1 つは @iErrorCount > 0 で、もう 1 つは @iErrorCount ==0 です。ゼロの場合は、一時ログ ファイルを削除するファイル システム タスクを追加します (行がゼロの場合)。

4) @ErrorCount > 0 パスの場合、ファイル システム タスクを追加して、一時ログ ファイルを必要な場所に有効な名前でコピーします。また、ファイル システム タスクを追加して、一時ログ ファイルを削除します。

于 2013-08-09T10:43:02.943 に答える