2017-01-05 5 views
0

現在、私はいくつかの可能なデータフローを実行するパッケージを持っています。失敗した行がログファイルとデータテーブルにリダイレクトされています。それは素晴らしい作品です。SSISの各行でより具体的なエラーを得る方法

ただし、行ごとに非常に具体的なエラーはありません。私はすでに入力メソッドを "Openrowset"に変更していますので、行ごとに進んでいます。

私が手にエラーが

は、「データ値が整合性制約に違反する」です。

私のチームは、以下のようなエラーが発生したことを知る必要があります。

"11.0" HRESULT:0x80040E2F説明:「UNIQUE KEY 制約の違反は、 'RAW_Primary_key_UK' オブジェクトに重複するキーを挿入できません 'dbo.temp_table' 重複したキー値が(XYZ、123、123)です。 "

この行に接続するデータとともに、すべての行にこれが必要です。私はイベントハンドラを試しています。それは私が失敗した行からデータを取得することを許可せず、コンポーネントに失敗します(ロードを維持するために必要です)。しかし、私には、私が探しているエラーメッセージを取得します。

エラーの場合、リダイレクト行とイベントハンドラの両方を持つように設定することはできないようです。

私はあなたが違反した特定の制約エラーとそのデータを取得する方法が不思議です。

また、一般的な「あなたは制約に違反しました」だけではありません。

答えて

0

一意の制約を持つ列に重複行を挿入しようとしているというエラーメッセージは非常に明確です。つまり、あなたの場合はtemp_tableの主キーです。したがって、データソースの重複値を排除してください。

更新:

あなたは必ず入ってくるデータ・ソースを作成し、そこに存在するかどうかは、重複しているか、いない、Execute SQL Taskを追加し、テーブルがすでにIF NOT EXISTS(SELECT 1 FROM table where...)を使用して挿入しようとしているデータがあったかどうかを確認できなかった場合続行するかどうかを制御する変数にsingle rowの結果を代入します。

+0

長く、ありがとうございました!ただし、エラーを引き起こす可能性のある他の制約があります。 FKのような、実際には本当に唯一の他のエラーです。私はすべての "nullではない"エラーが発生している。それらが重複する理由は、複数のデータソースがあり、同じデータが得られるからです。これを取り出し、それをraw-> staging->次にデータウェアハウス・テーブルに入れます。このプロセスを通して、重複がないことを保証します。しかし、データがどこから来るのかを制御しません。 – blk

+0

更新された回答を確認してください – LONG

0

エラー行をリダイレクトすると、2つの新しい列ErrorColumn + ErrorCodeが表示されます。

エラーコードは、固定である&ダウンロード可能 - (すべて標準のものがあります) ErrorColumnは、データフロー内の列の系列IDに関連しています。行につき1つの以上の誤差(例えば2つの別々のではないヌルcolsの)がある場合 - -

注あなただけのトラブルシューティングに非常に役立ちます最初の1

これを取得します。

+0

john mcTigheありがとうございます!私は残念ながらそれをやっていました。以前の私の会社では、SQLloaderを使用していましたが、同じレベルのエラー仕様が必要でした。上記の方法を使用すると、コードを変換した場合でも、依然として一般的なエラーのみが表示されます。スクリプトコンポーネントを使用してカスタムの送り先を作成し、エラーを自分で捕捉しなければなりませんでした。 SSISは元々のエラーをかなりスローします.... – blk

関連する問題