「UNIQUE KEY 制約 'AK_User' の違反です。SSIS を使用して Excel ファイルから SQL db にデータをコピーしようとすると、オブジェクト 'dbo.tblUsers に重複キーを挿入できません。
このエラーを無視して、パッケージを停止せずに次のレコードに進む方法はありますか?
私が必要とするのは、3 つのレコードを挿入するが、最初のレコードが重複している場合、失敗するのではなく、他のレコードを続行して挿入する必要があることです。
「UNIQUE KEY 制約 'AK_User' の違反です。SSIS を使用して Excel ファイルから SQL db にデータをコピーしようとすると、オブジェクト 'dbo.tblUsers に重複キーを挿入できません。
このエラーを無視して、パッケージを停止せずに次のレコードに進む方法はありますか?
私が必要とするのは、3 つのレコードを挿入するが、最初のレコードが重複している場合、失敗するのではなく、他のレコードを続行して挿入する必要があることです。
propagate
package の実行を継続または停止するために使用できる と呼ばれるシステム変数があります。
1.ON-Error
失敗しているタスクのイベント ハンドラーを作成します。通常は、全体に対して作成されますData Flow Task
。
2.を押しF4
てすべての変数のリストを取得し、上部のアイコンをクリックします
System Variable
デフォルトでは、変数はPropagate
True になります。これを 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