【发布时间】:2018-05-24 17:23:36
【问题描述】:
我使用此代码发送 SQL 请求:
SqlBulkCopy bulkCopy = new SqlBulkCopy(Connection);
foreach (DataColumn column in dt.Columns)
{
bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName);
}
bulkCopy.DestinationTableName = "nsi." + classifierData.Info.TableName;
bulkCopy.WriteToServer(dt);
并得到这个异常:
从 bcp 客户端收到无效的 colid 列长度
有什么方法可以确定是哪一行导致了错误?
我尝试过使用它,但它不起作用(值始终相同):
FieldInfo currentRow = typeof(SqlBulkCopy).GetField("_currentRowLength", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
var currentRowNumber = currentRow.GetValue(bulkCopy);
FieldInfo _rowsCopiedField = typeof(SqlBulkCopy).GetField("_rowsCopied", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
var currentRowN = _rowsCopiedField.GetValue(bulkCopy);
请帮帮我...
【问题讨论】:
-
现在,在这个问题中找到一个列号...
-
@b_stil 提供了一种查找导致错误的数据的方法...stackoverflow.com/a/19712572/2832222
-
只能按列,不能按行
标签: c# sql-server reflection sqlbulkcopy