私のトラブルであなたの一日を暗くして申し訳ありませんが、SSIS は私を壊してしまいました! 私は SSIS に不慣れで、誤解しているようです。
背景: Foreach ループ コンテナーと、CSV ファイルを SQL Server ステージング テーブルにインポートするいくつかの派生列を含むデータ フローを含む基本パッケージのいくつかのバージョンがあります。これは非常に簡単で、SQL 実行タスクとファイル移動が含まれていますが、これらは正常に機能します。問題は、Foreach ループとデータ フローにあります。
このパッケージの 1 つのバージョン (「A」と呼びましょう) があり、正常に動作しているように見えました。フォルダー内の複数のファイルを処理し、ステージング テーブルにレコードを挿入し、SQL ステートメントを適切に実行し、ファイルをアーカイブに移動します。プロセスを慎重に QA するまでは、すべて問題ないように見えました。1 つのファイルからデータを複製し、2 番目のソース ファイルからデータをインポートしていないことが判明しました。しかし、データの 2 番目の複製ラウンドには、2 番目のファイルのソース ファイル名 (派生列を介して) が含まれていました (ただし、最初のファイルからのデータ)。したがって、実際のデータを見て、2 番目のソース ファイルの値がステージング テーブルに書き込まれていないことがわかるまで、両方のファイルを正常に処理したように見えました。
これを発見すると、問題は Foreach ループにあり、さまざまなファイル パスと名前の変数をどのように設定するかがわかりました。そこで、パッケージの新しいバージョンを作成してみることにしました。パッケージ A をコピーすることから始め、パッケージ B を作成しました。B では、ソース接続マネージャーを削除し、すべての新しいファイルとパス変数と共に新しい接続マネージャーを作成しました。次に、データ フローと Foreach ループのさまざまな要素をクリーンアップ/修正/置換しようとしました。その過程で、A からの高度なマッピング (DID が機能する) が事実上すべて文字列として設定されていることを発見しました (Currency 列と Date 列も)。それは正しくないように思えたので、データ型を Currency に変更して各ソースの money 列を変更し、各日付関連の列をデータ型 Date に変更しました。
それに続いて何十ものエラーが発生し、パッケージ B を実行できません。すべての B データ型を文字列に戻しました (DID が機能するパッケージ A のセットアップをミラーリングします)。しかし、まだ喜びはありません。
これにより、私よりも賢い皆さんにいくつかの質問をすることができます。
1) SSIS が適切なデータ型を使用してソース CSV データを解釈できないのはなぜですか? つまり、一部の列が明確かつ完全に数値、通貨、または日付である場合、すべての入力列を STRING として設定する必要があるのはなぜですか? (はい、ソース CSV ファイルは非常にクリーンです。ほとんどのファイルには NULLS さえありません)
a. 日付関連のソース列の高度なマッピングを日付に変更すると、常に存在するエラー メッセージが表示されます: [フラット ファイル ソース [30]] エラー: データ変換に失敗しました。列「決済日」のデータ変換で、ステータス値 2 とステータス テキスト「データが失われる可能性があるため、値を変換できませんでした。」が返されました。
2) パッケージ B でデータ型を String にリセットしても、まだエラーが発生します。通常は切り捨てエラーです (はい、これらの列の 1 つで長さを 250 に調整しました)。a. エラー メッセージ: 「データが失われる可能性があるため、値を変換できませんでした。」. b. (テストとして) 列を無視するようにマッピングをリセットすると、次の列で同様のエラーがスローされます。
3) パッケージ A がファイルのデータを複製し、2 番目のファイルを処理しないのに、エラーをスローせず、両方をアーカイブに移動する理由はありますか?
4) データ ビューアーに解析エラーがあるように見える (間違った列にデータが表示される) のに、データ ビューアーでデータのコピー機能を使用してそれを Excel に貼り付けると、すべてのデータが完全に整列するのはなぜですか?
5) 初心者の SSIS ユーザーが理解する必要があり、このサイトだけでなくドキュメントや Web 記事の検索ではわからないヒントやコツはありますか?
役立つ場合は詳細を提供できますが、これらのパッケージは非常にシンプルであり、それほど不満を感じることはありません.
洞察に感謝します。
DGP