3

SqlBulkCopy を使用してこの例外を取得する:

colid 30 の bcp クライアントから無効な列の長さを受け取りました。

私は何時間もこれに頭をぶつけてきました。どの行に問題があるかはわかっていますが、「colid 30」がどの列かはわかりません。データ テーブルには 178 列あります。すべての値が正しいようで、データベース内のどの列データ型よりも長い値はありません。

このデータベースには物件リストがあり、現在 300 万件を超えるレコードがありますが、そのすべてに問題はありません。

colid 30 を特定する方法はありますか? または、bcp がデータベースに送信している実際の SQL を表示する方法はありますか?

4

3 に答える 3

8

これが他の誰かの問題の解決にも役立つことを願っています。

エラーは、データテーブルの文字列/varchar フィールドの 1 つにセミコロン「;」が含まれていたためです。その価値にあります。明らかに、挿入を行う前にこれらを手動でエスケープする必要があります!

すべての行/列をループして、次のことを行いました。

string.Replace(";", "CHAR(59)");

その後、すべてがスムーズに挿入されました。

于 2013-08-10T02:54:59.617 に答える