0

「UNIQUE KEY 制約 'AK_User' の違反です。SSIS を使用して Excel ファイルから SQL db にデータをコピーしようとすると、オブジェクト 'dbo.tblUsers に重複キーを挿入できません。

このエラーを無視して、パッケージを停止せずに次のレコードに進む方法はありますか?

私が必要とするのは、3 つのレコードを挿入するが、最初のレコードが重複している場合、失敗するのではなく、他のレコードを続行して挿入する必要があることです。

4

1 に答える 1

1

propagatepackage の実​​行を継続または停止するために使用できる と呼ばれるシステム変数があります。

1.ON-Error失敗しているタスクのイベント ハンドラーを作成します。通常は、全体に対して作成されますData Flow Task

2.を押しF4てすべての変数のリストを取得し、上部のアイコンをクリックします

ここに画像の説明を入力

System Variableデフォルトでは、変数はPropagateTrue になります。これを false に変更する必要があります。これは、基本的に、SSIS がエラーを他のコンポーネントに伝達せず、実行を続行できることを意味します。

ここに画像の説明を入力

Update 1:

不良行をスキップするには、基本的に2つの方法があります:-

1.ルックアップを使用する

primary key column values値が宛先と一致しない場合は、行を挿入しLookup No Match Outputますdestination。それ以外の場合は、行をスキップするか、いくつかのテーブルまたはフラット ファイルにリダイレクトします。Lookup Match Output

ここに画像の説明を入力

ルックアップの詳細については、この記事を参照してください

2.または、エラー行をフラット ファイルまたはテーブルにリダイレクトすることもできます。すべての SSIS データ フロー コンポーネントには Error Output があります。たとえば、派生コンポーネントの場合、エラー出力ダイアログ ボックスは次のようになります。

ここに画像の説明を入力

しかし、宛先のリダイレクトエラー行が正しく機能しないため、この条件はあなたの場合には役に立たないかもしれません。エラーが発生した場合、宛先に行を挿入せずにデータ全体をリダイレクトしますbulk insert。を使用してデータを挿入します。機能を実現するためtransactionsに使用してみてください。lookup

于 2013-01-08T10:06:22.740 に答える