我有一些我无法解释的东西,可能是什么原因造成的?
将数据从C#(dot.net 4.5.1。)发送到SQL Server(2008-10.0.1600.22 64位Build 6002 Service Pack 2),如下所示:
private int MyBulk(SqlBulkCopy bulkCopy, DataTable dt2save)
{
string tblName = "abc";
/* variable which shows me if save went through or not */
int myErr = 0;
try
{
bulkCopy.DestinationTableName = tblName;
bulkCopy.WriteToServer(dt2save);
}
catch (Exception ex)
{
myErr++;
myLog("a"); /* status check logged in the db */
}
myLog("b - myErr = " + myErr.ToString()); /* log myErr in the db */
return myErr;
}
我所知道的:
经过进一步调查,异常变量中的错误消息似乎告诉我,数据库中有一列不是空值的BUT会使事情变得更加奇怪,我要保存的数据表确实具有真实的非空INT该列上的值。
我宁愿不更改数据表以使列可以为空,我应该更改什么?可能这是一个批量插入问题,也许我不是引起该问题的那个人?
更新
如果SQL Server抱怨您试图在不允许NULL的列中存储NULL值,那么毫无疑问,这正是发生的事情-插入通过,该列是ID列,并且不,它不为空,其中有548(int)。至于log4net,NLog-具有一定意义,但是其中一个日志通过了,所以不确定为什么这样会没事
表是相同的,批量插入已通过
不,我不会多次调用该方法
我正在测试数据表中的一行