Binary(4) データベース テーブル フィールドに挿入しようとしている byte[] 列として、列の 1 つを持つデータ テーブルを含む厳密に型指定されたデータセットがあります。問題なく byte[] 列の値を設定できますが、データテーブルに対して sqlbulkcopy を実行すると、次の例外が発生します。
「データ ソースからの Int32 型の指定された値は、指定されたターゲット列のバイナリ型に変換できません。」
データテーブルは大きなデータテーブルであり、sqlbulkcopy はデータテーブルとデータベース テーブルから byte[]/binary(4) 列を引いたもので正常に動作します。以下は、.NET 2.0 を使用して SqlBulkCopy を壊している挿入したコードです。
byte[] codeByteArray = GetByteArray();
dt.byteArrayCol = codeByteArray;
...
using(SqlBulkCopy bc = new SqlBulkCopy(conn))
{
bc.DestinationTableName = dt.TableName;
bc.WriteToServer(dt);
bc.Close();
}