0

これがこのタスクを実行する正しい方法であるかどうかを調べようとしています。これを改善するための他の提案は大歓迎です。

私のSSISパッケージには次のものがあります。

ここに画像の説明を入力

  1. データ フロー タスクを実行し、ビューがあるソース データベースへの OLE DB 接続を確立します。
  2. SQL タスクの実行 - INSERT INTO 宛先を除いてクエリを実行しています (ソースから既に存在するすべてのレコード)。
  3. メール送信タスクは、メールを送信することです。

データ転送が成功したことを知る方法は? 送信メールを使用して、成功または失敗を示すことができるようにします。

このパッケージが自動的に実行されるようにスケジュールする方法 (毎週火曜日)。

以下の提案を試しました。新しいデータ フロー タスクを参照してください。

ここに画像の説明を入力

OLE DB ソース - データベース サーバーのビューを指している 1 ルックアップは、OLE DB ソースからすべての行を取得します。(ソースとルックアップの行数) が一致します。

検索タスクで、マップされたすべての列で「行のリダイレクト」を使用するようにエラー出力を構成しました。

OLE DB 宛先 (ソースからのレコードのサブセットが既に存在する宛先テーブル。そのため、構成されたエラーの出力は、挿入のために不一致の行を取得します。

パッケージを実行すると、主キー制約エラーが発生します - 重複キーを挿入できません。

助言がありますか?

4

1 に答える 1

1

Execute SQL Taskからコネクタをダブルクリックする必要があります。Send Mail Task現在は緑色で、成功した場合にのみそのパスを使用することを示しています。成功か失敗かは気にしないので、完了時に制約を更新する必要があります。

ソースからすべてのデータをプルし、ステージング テーブルに書き込むデータ フローがあるようです。次に、SQL 実行タスクでクエリを使用して、データが存在しないターゲット テーブルにデータを追加します。

これは、単一のデータ フローに統合できます。OLE DB ソースと OLE DB 宛先の間に、ルックアップ タスクを追加します。2005 を使用しているため、ルックアップの動作は 2008 以降とは少し異なります。ターゲット テーブルのビジネス キーを取得し、それを OLE DB ソースからのものと比較するクエリを作成します。これらのキーをインターフェイスにマップします。

一致しない行のみが必要なため、ルックアップから「一致しないレコード」を取得する必要があります。2005 年には、一致しない出力のオプションが存在しなかったため、エラー出力を OLE DB 宛先にルーティングする必要があります。

Andy Leonard は、これを達成する方法について、すてきな記事を書いています: Configuration an SSIS 2005 Lookup Transformation for a Left Outer Joinあなたの場合の唯一の違いは、一致した行を気にしないことです。の代わりにIgnore Failure、 を選択しますRedirect Row。次に、ルックアップを OLE DB 変換先に接続しようとすると、2 つのオプションが表示されます。緑のコネクタは一致した行、赤のコネクタは不一致の行です。赤い道をあなたの目的地に結び付けてください

于 2013-08-21T14:41:10.753 に答える