SSIS 一括挿入タスク エラー フィールド ターミネータと行ターミネータ
-
2012年4月8日 14:26
現在、SQL SERVER2005 ⇒ 2008 R2 へのサーバーリプレイス作業を行っています。SSISの一括挿入タスク
(INPUTファイル:固定長のテキスト、 フォーマットファイル:XML以外のフォーマットを使用)
をいくつか使用していますが、うち、1種類のSSISで、1.≪現象≫
2005では、正常終了するが、
2008にアップグレードしたSSISで実行すると、
下記のようなエラーとなってしまいます。いろいろとネットで検索しましたが、適切な回答が見当たりませんでしたので、ご教示ください。
2.≪参考≫
①テキスト容量:680MBくらい、1行サイズ:2500バイト
②別の容量の小さいテキストファイルで実行した場合は、2008でも正常終了します。
③フォーマットファイルのバージョンは【7.0】と古いまま使用していますが、
(元は、SQL SERVER7.0のDTSで使用していたもの)
バージョンを『9.0』または『10.0』に変更すると今度は『列番号が不正です』というエラーに変わります。
3.【エラー内容】
"リンク サーバー "(null)" の OLE DB プロバイダー "BULK" から行をフェッチできません。リンク サーバー "(null)" の OLE DB プロバイダー "BULK" により、エラーがレポートされました。プロバイダーからエラーに関する情報を取得できませんでした。一括読み込みに失敗しました。データ ファイルの行 124670、列 191 で、列が長すぎます。フィールド ターミネータと行ターミネータが正しく指定されていることを確認してください。"
すべての返信
-
2012年4月13日 7:49
SSISのエラー出力は、処理が多段階に呼び出されているので、ちょっとわかりにくいですが
『データ ファイルの行 124670、列 191 で、列が長すぎます。フィールド ターミネータと行ターミネータが正しく指定されていることを確認してください。』
というのが、エラーの本体です。
この内容からすると
行 124670、列 191 の項目の『終わり』が判別できず、
フォーマット定義のデータ長を超えていると判定されています。この手のエラーの場合は、まず、該当するデータを突き止めることから始めるのがいいと思います。
(ファイルが大きいようなので、大変だとは思いますが)ちなみに、一括挿入タスクは、SSISのタスクですが、実態は、
SQLServerのbcpコマンドをコールするだけのはずです。
ですので、SSISではなく、bcpコマンドで実行してみるのもいいかもしれません。bcpのドキュメント
http://msdn.microsoft.com/ja-jp/library/ms191479(SQL.100).aspx
を見る限り、フォーマットファイルは、上位互換が保たれているようなので
原因ははっきりしませんが。。。---------------------------------
Infospire Kayano- 回答の候補に設定 山本春海Moderator 2012年4月27日 6:37
- 回答としてマーク 山本春海Moderator 2012年5月17日 8:42

