System.Data.SqlClient.SqlException= "从 bcp 客户端收到一个对 colid 4 无效的列长度。"

C#在开发中遇到的问题:

功能描述:从excel中读取数据保存到SQLSERVER数据库中报出的错误。

错误信息:
异常:System.Data.SqlClient.SqlException: 从 bcp 客户端收到一个对 colid 4 无效的列长度。
   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.SqlBulkCopy.WriteToServerInternal()
   在 System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServer(Int32 columnCount)
   在 System.Data.SqlClient.SqlBulkCopy.WriteToServer(IDataReader reader)
   在 NewKeyGame.LogInfrastructure.Common.SQLHelper.InsertToDB(IDataReader reader, String destTableName, List`1 mappingList) 

解决:

原来是我的数据批量导入数据库程序的数据有问题,数据有一列的值超过了数据库定义的长度。从错误信息可以看出是位置是colid 4的列,表示是数据库表的第9列。找到问题是数据是22,而数据库定义是20个,这样超出了数据库定义列的长度。

你可能感兴趣的:(C#)