C#BulkCopy WriteToServer异常行为

时间:2018-12-11 15:26:39

标签: c# sql-server-2008 bulkinsert

我有一些我无法解释的东西,可能是什么原因造成的?

将数据从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;
        }

我所知道的:

  1. 批量插入有效!它保存数据
  2. myErr返回值为1
  3. myLog保存“ b”值,但未保存“ a”值

经过进一步调查,异常变量中的错误消息似乎告诉我,数据库中有一列不是空值的BUT会使事情变得更加奇怪,我要保存的数据表确实具有真实的非空INT该列上的值。

我宁愿不更改数据表以使列可以为空,我应该更改什么?可能这是一个批量插入问题,也许我不是引起该问题的那个人?

更新

  1. 如果SQL Server抱怨您试图在不允许NULL的列中存储NULL值,那么毫无疑问,这正是发生的事情-插入通过,该列是ID列,并且不,它不为空,其中有548(int)。至于log4net,NLog-具有一定意义,但是其中一个日志通过了,所以不确定为什么这样会没事

  2. 表是相同的,批量插入已通过

  3. 不,我不会多次调用该方法

  4. 我正在测试数据表中的一行

0 个答案:

没有答案