0

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

誰にもアイデアはありますか??

4

0 に答える 0