私は SSIS を初めて使用し、OLE DB ソース ステップで sql ステートメントを使用してデータを取得しているときに問題が発生しました。このデータには、変換が必要な 5 つの DATETIME フィールドとすべてのデータが含まれています。フラットファイルに入ります。
私は次のようにSQLで変換を行っています:
REPLACE(CONVERT(VARCHAR(10), birthdate, 101), '/', '') AS 'Date of Birth (MMDDYYYY)
SSIS フラット ファイル接続マネージャーでは、DataType は文字列 [DT_STR] で、OutputColumnWidth は 8 です。上記の変換により 8 文字の varchar が作成されるため、切り捨てなしで SSIS で動作します。varchar(8) に変換しようとすると、SQL Server Management Studio でデータが切り捨てられます。
私の問題は、次の変換の試みが失敗することです。SQLコードは次のとおりです。
REPLACE(CONVERT(VARCHAR(10), exp_date, 103), '/', '') AS 'Expiration Date
すべてを同じ設定で再現したにもかかわらず、「データが失われる可能性があるため、値を変換できませんでした」というエラーが表示されます。この変換により、日付が ' DDMMYYYY
' 形式に変換されます。
これがデータ変換エラーであることは調査からわかっていますが、特に最初の変換が正しく機能している場合に回避する方法がわかりません。
興味深いのは、エラーの行を別のフラット ファイルにリダイレクトすると、日付がまったく問題なく取得および変換されることです。
私はここで途方に暮れており、グループからの助けをいただければ幸いです。