2

一連の XML ファイルを SQL テーブルにインポートする SSIS パッケージがあります。XML のインポートが完了したら、SQL 実行タスクを実行して一部のレコードを更新し、まだ存在しない他のレコードをインポートします。タスクの 1 つは、電話番号に基づいてユーザー ログインを作成します。ソース データにエラーがあり、番号が入力されていないか、重複した番号が入力されている場合があります。データ入力を制御することはできませんが、もちろん userlogon テーブルには一意の値が必要です。

PK Violation エラーを単に無視して次のレコードを続行するように Exec SQL タスクを構成するにはどうすればよいですか?

SQL コードは次のとおりです。

insert into Logins
select REPLACE(LTRIM(REPLACE(Customer_Number, '0', ' ')), ' ', '0'), RIGHT(customer_number,4) + EFFDAT, Company_Name, Customer_Number, Email_Address, 0, CU_Allow_Web_Ordering, 0, 0, 1 from CUSTOMER_MASTER_FILE where CUSTOMER_NUMBER not in
(select CustomerNumber from Logins)
4

1 に答える 1

0

あなたのようなクエリを送信したい場合は、できません。たとえば、10 行のバッチを送信して 8 行をコミットし、2 行を失敗させることはできません。

この解決策が良いとは思いません。データを挿入する前にログインが存在するかどうかを何らかの方法でテストする必要があると思いますが、必要に応じて、コンポーネントの maxNUmberOfErrors を非常に大きな数に設定し、ログインを挿入してみてください。ループ コンポーネントで 1 つずつ。コンポーネントの失敗は、失敗の数が maxNUMberOfErrors に達するまで、パッケージの失敗を引き起こしません。

于 2012-07-16T08:46:10.643 に答える