SqlBulkCopy を使用して大量のデータをデータベースに挿入しようとしています。このプログラムはもともと .NET 4.5 を使用して作成しましたが、必要な古いマシンでは実行できません。テスト中 (4.5 で)、プログラムは問題なく動作しましたが、.NET 4.0 にダウングレードすると動作しなくなりました。
コードは次のとおりです。
string query = string.Format("Generic database query text");
OdbcCommand com = new OdbcCommand(query, conn);
OdbcDataReader reader = com.ExecuteReader();
//insert the new records
SqlBulkCopy sbc = new SqlBulkCopy(connectionString);
sbc.EnableStreaming = true;
sbc.BulkCopyTimeout = 1200;
sbc.DestinationTableName = "TableName;
sbc.WriteToServer(reader);
.NET 4.5 ではストリーミングを有効にできますが、.NET 4.0 ではできません。.NET 4.5 でストリーミングを無効にしても、ソリューションが壊れることはありません。これがコードの唯一の違いです。表の列は、正確に 100000% 1:1 でマップされます。一致する列名、一致するデータ型、一致するすべて。また、以下のコードを使用して列を手動でマッピングしようとしましたが、役に立ちませんでした。
sbc.ColumnMappings.add("column1", "matchedColumn1");
私が得ている正確なエラーは次のとおりです。
Arithmetic operation resulted in an overflow.
しかし、大量に大量生産されているわけではないことはわかっています。数学はまったく行われていません。これは、あるクエリから別のクエリに挿入する単純なクエリです。現在、ID が 5 桁を超えない小さなサブセットを (テスト用に) 使用しており、データベース内のすべての int を bigint に変更することもテストしました。うまくいきませんでした。
列:
1 - Int
A1 -Varchar(50)
19 -Varchar(50)
True -bit
5/5/2011 -date
Passed InstaMed Standard Edits -text
1 -int
C0200000000000000023 -varchar(100)
39 -int
82 -int
誰にもアイデアはありますか??