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 位,我什至测试过将数据库中的所有整数都更改为 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